<?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>125649</bug_id>
          
          <creation_ts>2013-12-12 13:00:52 -0800</creation_ts>
          <short_desc>cStack: Calling into FTL-generated code should be fast</short_desc>
          <delta_ts>2014-01-30 13:23:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>113621</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>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>959308</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-12 13:00:52 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959331</commentid>
    <comment_count>1</comment_count>
      <attachid>219116</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-12 13:56:53 -0800</bug_when>
    <thetext>Created attachment 219116
starting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959679</commentid>
    <comment_count>2</comment_count>
      <attachid>219199</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-13 14:29:05 -0800</bug_when>
    <thetext>Created attachment 219199
moar</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959693</commentid>
    <comment_count>3</comment_count>
      <attachid>219204</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-13 15:13:55 -0800</bug_when>
    <thetext>Created attachment 219204
FTL-on-C-stack now knows that 1+1=2

It ran the first program.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959771</commentid>
    <comment_count>4</comment_count>
      <attachid>219232</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-13 21:24:58 -0800</bug_when>
    <thetext>Created attachment 219232
it sort of runs crypto

You have to disable the LLInt and GC, but it sort of works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959847</commentid>
    <comment_count>5</comment_count>
      <attachid>219254</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-14 10:54:25 -0800</bug_when>
    <thetext>Created attachment 219254
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959859</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-14 13:35:08 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/160600</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960172</commentid>
    <comment_count>7</comment_count>
      <attachid>219254</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-12-16 12:15:26 -0800</bug_when>
    <thetext>Comment on attachment 219254
the patch

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

r=me

&gt; Source/JavaScriptCore/runtime/Options.h:211
&gt; +    v(bool, disableGC, false) \

I prefer for settings like this to be stated in the affirmative: &quot;enableGC&quot;, defaulting to true. &quot;Don&apos;t disable GC&quot; is a hard phrase to parse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967607</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-13 18:44:21 -0800</bug_when>
    <thetext>Review status updated in r161938: &lt;http://trac.webkit.org/r161938&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219116</attachid>
            <date>2013-12-12 13:56:53 -0800</date>
            <delta_ts>2013-12-13 14:29:05 -0800</delta_ts>
            <desc>starting</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>10328</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0aW9ucy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0aW9ucy5oCShy
ZXZpc2lvbiAxNjA0OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFiYnJldmlh
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQCBzdGF0aWMgaW5saW5lIExU
eXBlIGZsb2F0VHlwZShMQ29udGV4dCBjCiBzdGF0aWMgaW5saW5lIExUeXBlIGRvdWJsZVR5cGUo
TENvbnRleHQgY29udGV4dCkgeyByZXR1cm4gbGx2bS0+RG91YmxlVHlwZUluQ29udGV4dChjb250
ZXh0KTsgfQogCiBzdGF0aWMgaW5saW5lIExUeXBlIHBvaW50ZXJUeXBlKExUeXBlIHR5cGUpIHsg
cmV0dXJuIGxsdm0tPlBvaW50ZXJUeXBlKHR5cGUsIDApOyB9CitzdGF0aWMgaW5saW5lIExUeXBl
IGFycmF5VHlwZShMVHlwZSB0eXBlLCB1bnNpZ25lZCBjb3VudCkgeyByZXR1cm4gbGx2bS0+QXJy
YXlUeXBlKHR5cGUsIGNvdW50KTsgfQogc3RhdGljIGlubGluZSBMVHlwZSB2ZWN0b3JUeXBlKExU
eXBlIHR5cGUsIHVuc2lnbmVkIGNvdW50KSB7IHJldHVybiBsbHZtLT5WZWN0b3JUeXBlKHR5cGUs
IGNvdW50KTsgfQogCiBlbnVtIFBhY2tpbmdNb2RlIHsgTm90UGFja2VkLCBQYWNrZWQgfTsKQEAg
LTIxNiw2ICsyMTcsNyBAQCBzdGF0aWMgaW5saW5lIExWYWx1ZSBidWlsZEludENhc3QoTEJ1aWxk
CiBzdGF0aWMgaW5saW5lIExWYWx1ZSBidWlsZEZQQ2FzdChMQnVpbGRlciBidWlsZGVyLCBMVmFs
dWUgdmFsdWUsIExUeXBlIHR5cGUpIHsgcmV0dXJuIGxsdm0tPkJ1aWxkRlBDYXN0KGJ1aWxkZXIs
IHZhbHVlLCB0eXBlLCAiIik7IH0KIHN0YXRpYyBpbmxpbmUgTFZhbHVlIGJ1aWxkSW50VG9QdHIo
TEJ1aWxkZXIgYnVpbGRlciwgTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBsbHZt
LT5CdWlsZEludFRvUHRyKGJ1aWxkZXIsIHZhbHVlLCB0eXBlLCAiIik7IH0KIHN0YXRpYyBpbmxp
bmUgTFZhbHVlIGJ1aWxkUHRyVG9JbnQoTEJ1aWxkZXIgYnVpbGRlciwgTFZhbHVlIHZhbHVlLCBM
VHlwZSB0eXBlKSB7IHJldHVybiBsbHZtLT5CdWlsZFB0clRvSW50KGJ1aWxkZXIsIHZhbHVlLCB0
eXBlLCAiIik7IH0KK3N0YXRpYyBpbmxpbmUgTFZhbHVlIGJ1aWxkUHRyVG9JbnQoTEJ1aWxkZXIg
YnVpbGRlciwgTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBsbHZtLT5CdWlsZFB0
clRvSW50KGJ1aWxkZXIsIHZhbHVlLCB0eXBlLCAiIik7IH0KIHN0YXRpYyBpbmxpbmUgTFZhbHVl
IGJ1aWxkQml0Q2FzdChMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUp
IHsgcmV0dXJuIGxsdm0tPkJ1aWxkQml0Q2FzdChidWlsZGVyLCB2YWx1ZSwgdHlwZSwgIiIpOyB9
CiBzdGF0aWMgaW5saW5lIExWYWx1ZSBidWlsZElDbXAoTEJ1aWxkZXIgYnVpbGRlciwgTEludFBy
ZWRpY2F0ZSBjb25kLCBMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBsbHZtLT5C
dWlsZElDbXAoYnVpbGRlciwgY29uZCwgbGVmdCwgcmlnaHQsICIiKTsgfQogc3RhdGljIGlubGlu
ZSBMVmFsdWUgYnVpbGRGQ21wKExCdWlsZGVyIGJ1aWxkZXIsIExSZWFsUHJlZGljYXRlIGNvbmQs
IExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGxsdm0tPkJ1aWxkRkNtcChidWls
ZGVyLCBjb25kLCBsZWZ0LCByaWdodCwgIiIpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuaAkocmV2aXNpb24gMTYwNDk5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBGVEwgewogICAgIG1hY3JvKGFkZFdpdGhPdmVyZmxvdzMyLCAibGx2bS5zYWRkLndpdGgub3Zl
cmZsb3cuaTMyIiwgZnVuY3Rpb25UeXBlKHN0cnVjdFR5cGUobV9jb250ZXh0LCBpbnQzMiwgYm9v
bGVhbiksIGludDMyLCBpbnQzMikpIFwKICAgICBtYWNybyhhZGRXaXRoT3ZlcmZsb3c2NCwgImxs
dm0uc2FkZC53aXRoLm92ZXJmbG93Lmk2NCIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RUeXBlKG1fY29u
dGV4dCwgaW50NjQsIGJvb2xlYW4pLCBpbnQ2NCwgaW50NjQpKSBcCiAgICAgbWFjcm8oZG91Ymxl
QWJzLCAibGx2bS5mYWJzLmY2NCIsIGZ1bmN0aW9uVHlwZShkb3VibGVUeXBlLCBkb3VibGVUeXBl
KSkgXAorICAgIG1hY3JvKGZyYW1lQWRkcmVzcywgImxsdm0uZnJhbWVhZGRyZXNzIiwgZnVuY3Rp
b25UeXBlKHBvaW50ZXJUeXBlKGludDgpLCBpbnQzMikpIFwKICAgICBtYWNybyhtdWxXaXRoT3Zl
cmZsb3czMiwgImxsdm0uc211bC53aXRoLm92ZXJmbG93LmkzMiIsIGZ1bmN0aW9uVHlwZShzdHJ1
Y3RUeXBlKG1fY29udGV4dCwgaW50MzIsIGJvb2xlYW4pLCBpbnQzMiwgaW50MzIpKSBcCiAgICAg
bWFjcm8obXVsV2l0aE92ZXJmbG93NjQsICJsbHZtLnNtdWwud2l0aC5vdmVyZmxvdy5pNjQiLCBm
dW5jdGlvblR5cGUoc3RydWN0VHlwZShtX2NvbnRleHQsIGludDY0LCBib29sZWFuKSwgaW50NjQs
IGludDY0KSkgXAogICAgIG1hY3JvKHBhdGNocG9pbnRJbnQ2NCwgImxsdm0uZXhwZXJpbWVudGFs
LnBhdGNocG9pbnQuaTY0IiwgZnVuY3Rpb25UeXBlKGludDY0LCBpbnQzMiwgaW50MzIsIHJlZjgs
IGludDMyLCBWYXJpYWRpYykpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNjA0OTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTEsNiArNTEsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIERGRzsKIAogc3RhdGljIGludCBjb21waWxl
Q291bnRlcjsKIAorLy8gRklYTUU6IEdldCByaWQgb2YgdGhpcyBhbmQgaW50cm9kdWNlIGEgcmVh
bCBzdGFjayBjaGVjay4KKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjU2NTAKK3N0YXRpYyB1aW50cHRyX3Qgc3RhY2tMaW1pdDsKKwogLy8gVXNpbmcgdGhpcyBp
bnN0ZWFkIG9mIHR5cGVDaGVjaygpIGhlbHBzIHRvIHJlZHVjZSB0aGUgbG9hZCBvbiBMTFZNLCBi
eSBjcmVhdGluZwogLy8gc2lnbmlmaWNhbnRseSBsZXNzIGRlYWQgY29kZS4KICNkZWZpbmUgRlRM
X1RZUEVfQ0hFQ0sobG93VmFsdWUsIGhpZ2hWYWx1ZSwgdHlwZXNQYXNzZWRUaHJvdWdoLCBmYWls
Q29uZGl0aW9uKSBkbyB7IFwKQEAgLTkyLDE2ICs5NiwyOSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBsbHZtLT5Nb2R1bGVDcmVhdGVXaXRoTmFtZUluQ29udGV4dChuYW1lLmRhdGEoKSwgbV9mdGxT
dGF0ZS5jb250ZXh0KTsKICAgICAgICAgCiAgICAgICAgIG1fZnRsU3RhdGUuZnVuY3Rpb24gPSBh
ZGRGdW5jdGlvbigKLSAgICAgICAgICAgIG1fZnRsU3RhdGUubW9kdWxlLCBuYW1lLmRhdGEoKSwg
ZnVuY3Rpb25UeXBlKG1fb3V0LmludDY0LCBtX291dC5pbnRQdHIpKTsKKyAgICAgICAgICAgIG1f
ZnRsU3RhdGUubW9kdWxlLCBuYW1lLmRhdGEoKSwgZnVuY3Rpb25UeXBlKG1fb3V0LmludDY0KSk7
CiAgICAgICAgIHNldEZ1bmN0aW9uQ2FsbGluZ0NvbnYobV9mdGxTdGF0ZS5mdW5jdGlvbiwgTExW
TUNDYWxsQ29udik7CiAgICAgICAgIAogICAgICAgICBtX291dC5pbml0aWFsaXplKG1fZnRsU3Rh
dGUubW9kdWxlLCBtX2Z0bFN0YXRlLmZ1bmN0aW9uLCBtX2hlYXBzKTsKICAgICAgICAgCi0gICAg
ICAgIG1fcHJvbG9ndWUgPSBhcHBlbmRCYXNpY0Jsb2NrKG1fZnRsU3RhdGUuY29udGV4dCwgbV9m
dGxTdGF0ZS5mdW5jdGlvbik7Ci0gICAgICAgIG1fb3V0LmFwcGVuZFRvKG1fcHJvbG9ndWUpOwor
ICAgICAgICBtX3Byb2xvZ3VlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJQcm9sb2d1ZSIpKTsK
KyAgICAgICAgTEJhc2ljQmxvY2sgc3RhY2tPdmVyZmxvdyA9IEZUTF9ORVdfQkxPQ0sobV9vdXQs
ICgiU3RhY2sgb3ZlcmZsb3ciKSk7CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG1fcHJvbG9ndWUs
IHN0YWNrT3ZlcmZsb3cpOwogICAgICAgICBjcmVhdGVQaGlWYXJpYWJsZXMoKTsKKyAgICAgICAg
bV9jYXB0dXJlZCA9IG1fb3V0LnB0clRvSW50KAorICAgICAgICAgICAgbV9vdXQuYWxsb2NhKGFy
cmF5VHlwZShtX291dC5pbnQ2NCwgbV9ncmFwaC5tX25leHRNYWNoaW5lTG9jYWwpKSwKKyAgICAg
ICAgICAgIG1fb3V0LmludFB0cik7CisgICAgICAgIAorICAgICAgICAvLyBXZSBzaG91bGQgbm90
IGNyZWF0ZSBhbnkgYWxsb2NhJ3MgYWZ0ZXIgdGhpcyBwb2ludCwgc2luY2UgdGhleSB3aWxsIGNl
YXNlIHRvCisgICAgICAgIC8vIGJlIG1lbTJyZWcgY2FuZGlkYXRlcy4KKyAgICAgICAgCisgICAg
ICAgIG1fZnRsU3RhdGUuY2FwdHVyZWRTdGFja21hcElEID0gbV9zdGFja21hcElEcysrOworICAg
ICAgICBtX291dC5jYWxsKAorICAgICAgICAgICAgbV9vdXQuc3RhY2ttYXBJbnRyaW5zaWMoKSwg
bV9vdXQuY29uc3RJbnQzMihtX2Z0bFN0YXRlLmNhcHR1cmVkU3RhY2ttYXBJRCksCisgICAgICAg
ICAgICBtX291dC5pbnQzMlplcm8pOwogICAgICAgICAKLSAgICAgICAgbV9jYWxsRnJhbWUgPSBt
X291dC5wYXJhbSgwKTsKKyAgICAgICAgbV9jYWxsRnJhbWUgPSBtX291dC5wdHJUb0ludCgKKyAg
ICAgICAgICAgIG1fb3V0LmNhbGwobV9vdXQuZnJhbWVBZGRyZXNzSW50cmluc2ljKCksIG1fb3V0
LmludDMyWmVybyksIG1fb3V0LmludFB0cik7CiAgICAgICAgIG1fdGFnVHlwZU51bWJlciA9IG1f
b3V0LmNvbnN0SW50NjQoVGFnVHlwZU51bWJlcik7CiAgICAgICAgIG1fdGFnTWFzayA9IG1fb3V0
LmNvbnN0SW50NjQoVGFnTWFzayk7CiAgICAgICAgIApAQCAtMTEyLDggKzEyOSwxNCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBtX2Jsb2Nrcy5hZGQobV9oaWdoQmxvY2ssIEZUTF9ORVdfQkxPQ0so
bV9vdXQsICgiQmxvY2sgIiwgKm1faGlnaEJsb2NrKSkpOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBtX291dC5hcHBlbmRUbyhtX3Byb2xvZ3VlKTsKLSAgICAgICAgbV9vdXQuanVtcChs
b3dCbG9jayhtX2dyYXBoLmJsb2NrKDApKSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0
LmNvbnN0SW50UHRyKGNvZGVCbG9jaygpKSwgYWRkcmVzc0ZvcihKU1N0YWNrOjpDb2RlQmxvY2sp
KTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgbV9vdXQuYmVsb3cobV9jYWxs
RnJhbWUsIG1fb3V0LmxvYWRQdHIobV9vdXQuYWJzb2x1dGUoJnN0YWNrTGltaXQpKSksCisgICAg
ICAgICAgICBzdGFja092ZXJmbG93LCBsb3dCbG9jayhtX2dyYXBoLmJsb2NrKDApKSk7CisgICAg
ICAgIAorICAgICAgICBtX291dC5hcHBlbmRUbyhzdGFja092ZXJmbG93LCBsb3dCbG9jayhtX2dy
YXBoLmJsb2NrKDApKSk7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgZXhjZXB0aW9ucy4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzYyMgorICAgICAgICBtX291
dC5jcmFzaCgpOwogICAgICAgICAKICAgICAgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBkZXB0aEZp
cnN0OwogICAgICAgICBtX2dyYXBoLmdldEJsb2Nrc0luRGVwdGhGaXJzdE9yZGVyKGRlcHRoRmly
c3QpOwpAQCAtMTI3MCw3ICsxMjkzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIGNhbGwg
PSBtX291dC5jYWxsKAogICAgICAgICAgICAgbV9vdXQucGF0Y2hwb2ludEludDY0SW50cmluc2lj
KCksCiAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKHN0YWNrbWFwSUQpLCBtX291dC5jb25z
dEludDMyKHNpemVPZkdldEJ5SWQoKSksCi0gICAgICAgICAgICBjb25zdE51bGwobV9vdXQucmVm
OCksIG1fb3V0LmNvbnN0SW50MzIoMiksIG1fY2FsbEZyYW1lLCBiYXNlKTsKKyAgICAgICAgICAg
IGNvbnN0TnVsbChtX291dC5yZWY4KSwgbV9vdXQuY29uc3RJbnQzMigxKSwgYmFzZSk7CiAgICAg
ICAgIHNldEluc3RydWN0aW9uQ2FsbGluZ0NvbnZlbnRpb24oY2FsbCwgTExWTUFueVJlZ0NhbGxD
b252KTsKICAgICAgICAgc2V0SlNWYWx1ZShjYWxsKTsKICAgICAgICAgCkBAIC0xMjk1LDcgKzEz
MTgsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgY2FsbCA9IG1fb3V0LmNhbGwoCiAgICAg
ICAgICAgICBtX291dC5wYXRjaHBvaW50Vm9pZEludHJpbnNpYygpLAogICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnQzMihzdGFja21hcElEKSwgbV9vdXQuY29uc3RJbnQzMihzaXplT2ZQdXRCeUlk
KCkpLAotICAgICAgICAgICAgY29uc3ROdWxsKG1fb3V0LnJlZjgpLCBtX291dC5jb25zdEludDMy
KDMpLCBtX2NhbGxGcmFtZSwgYmFzZSwgdmFsdWUpOworICAgICAgICAgICAgY29uc3ROdWxsKG1f
b3V0LnJlZjgpLCBtX291dC5jb25zdEludDMyKDIpLCBiYXNlLCB2YWx1ZSk7CiAgICAgICAgIHNl
dEluc3RydWN0aW9uQ2FsbGluZ0NvbnZlbnRpb24oY2FsbCwgTExWTUFueVJlZ0NhbGxDb252KTsK
ICAgICAgICAgCiAgICAgICAgIG1fZnRsU3RhdGUucHV0QnlJZHMuYXBwZW5kKFB1dEJ5SWREZXNj
cmlwdG9yKApAQCAtNDAwMyw3ICs0MDI2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgT1NSRXhpdCYg
ZXhpdCwgRXhpdEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBGb3JtYXR0ZWRWYWx1ZSBsb3dWYWx1
ZSwKICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAgIHsKLSAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChtX2NhbGxGcmFtZSk7CiAgICAgICAgIGlmICghIWxvd1ZhbHVlKQogICAgICAg
ICAgICAgYXJndW1lbnRzLmFwcGVuZChsb3dWYWx1ZS52YWx1ZSgpKTsKICAgICAgICAgCkBAIC00
MjY2LDI5ICs0Mjg4LDM0IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1cm4gYWRkcmVz
c0ZvcihiYXNlLCBvcGVyYW5kLCBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnRhZykpOwogICAgIH0KLSAgICBUeXBlZFBvaW50ZXIgYWRkcmVzc0ZvcihpbnQg
b3BlcmFuZCkKKyAgICBUeXBlZFBvaW50ZXIgYWRkcmVzc0ZvcihpbnQgb3BlcmFuZCwgcHRyZGlm
Zl90IG9mZnNldCA9IDApCiAgICAgewotICAgICAgICByZXR1cm4gYWRkcmVzc0ZvcihtX2NhbGxG
cmFtZSwgb3BlcmFuZCk7CisgICAgICAgIHJldHVybiBhZGRyZXNzRm9yKFZpcnR1YWxSZWdpc3Rl
cihvcGVyYW5kKSwgb2Zmc2V0KTsKICAgICB9Ci0gICAgVHlwZWRQb2ludGVyIGFkZHJlc3NGb3Io
VmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgVHlwZWRQb2ludGVyIGFkZHJlc3NGb3IoVmly
dHVhbFJlZ2lzdGVyIG9wZXJhbmQsIHB0cmRpZmZfdCBvZmZzZXQgPSAwKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkZHJlc3NGb3IobV9jYWxsRnJhbWUsIG9wZXJhbmQub2Zmc2V0KCkpOworICAg
ICAgICBpZiAob3BlcmFuZC5pc0xvY2FsKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBUeXBlZFBv
aW50ZXIoCisgICAgICAgICAgICAgICAgbV9oZWFwcy52YXJpYWJsZXNbb3BlcmFuZC5vZmZzZXQo
KV0sCisgICAgICAgICAgICAgICAgbV9vdXQuYWRkKG1fY2FwdHVyZWQsIG9wZXJhbmQudG9Mb2Nh
bCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBhZGRy
ZXNzRm9yKG1fY2FsbEZyYW1lLCBvcGVyYW5kLm9mZnNldCgpLCBvZmZzZXQpOwogICAgIH0KICAg
ICBUeXBlZFBvaW50ZXIgcGF5bG9hZEZvcihpbnQgb3BlcmFuZCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBwYXlsb2FkRm9yKG1fY2FsbEZyYW1lLCBvcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuIHBh
eWxvYWRGb3IoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpKTsKICAgICB9CiAgICAgVHlwZWRQb2lu
dGVyIHBheWxvYWRGb3IoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCiAgICAgewotICAgICAgICBy
ZXR1cm4gcGF5bG9hZEZvcihtX2NhbGxGcmFtZSwgb3BlcmFuZC5vZmZzZXQoKSk7CisgICAgICAg
IHJldHVybiBhZGRyZXNzRm9yKG9wZXJhbmQsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwogICAgIH0KICAgICBUeXBlZFBvaW50ZXIgdGFn
Rm9yKGludCBvcGVyYW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRhZ0ZvcihtX2NhbGxGcmFt
ZSwgb3BlcmFuZCk7CisgICAgICAgIHJldHVybiB0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKG9wZXJh
bmQpKTsKICAgICB9CiAgICAgVHlwZWRQb2ludGVyIHRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIgb3Bl
cmFuZCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0YWdGb3IobV9jYWxsRnJhbWUsIG9wZXJhbmQu
b2Zmc2V0KCkpOworICAgICAgICByZXR1cm4gYWRkcmVzc0ZvcihvcGVyYW5kLCBPQkpFQ1RfT0ZG
U0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOwogICAgIH0KICAgICAK
ICAgICBWTSYgdm0oKSB7IHJldHVybiBtX2dyYXBoLm1fdm07IH0KQEAgLTQzMDMsNiArNDMzMCw3
IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxCYXNpY0Jsb2NrKiwgTEJhc2ljQmxvY2s+IG1fYmxv
Y2tzOwogICAgIAogICAgIExWYWx1ZSBtX2NhbGxGcmFtZTsKKyAgICBMVmFsdWUgbV9jYXB0dXJl
ZDsKICAgICBMVmFsdWUgbV90YWdUeXBlTnVtYmVyOwogICAgIExWYWx1ZSBtX3RhZ01hc2s7CiAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHJldmlzaW9uIDE2
MDQ5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIxMCw2ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIGNhc3RUb0ludDMy
KExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gaW50Q2FzdCh2YWx1ZSwgaW50MzIpOyB9CiAgICAgTFZh
bHVlIGZwQ2FzdChMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpIHsgcmV0dXJuIGJ1aWxkRlBDYXN0
KG1fYnVpbGRlciwgdmFsdWUsIHR5cGUpOyB9CiAgICAgTFZhbHVlIGludFRvUHRyKExWYWx1ZSB2
YWx1ZSwgTFR5cGUgdHlwZSkgeyByZXR1cm4gYnVpbGRJbnRUb1B0cihtX2J1aWxkZXIsIHZhbHVl
LCB0eXBlKTsgfQorICAgIExWYWx1ZSBwdHJUb0ludChMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUp
IHsgcmV0dXJuIGJ1aWxkUHRyVG9JbnQobV9idWlsZGVyLCB2YWx1ZSwgdHlwZSk7IH0KICAgICBM
VmFsdWUgYml0Q2FzdChMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpIHsgcmV0dXJuIGJ1aWxkQml0
Q2FzdChtX2J1aWxkZXIsIHZhbHVlLCB0eXBlKTsgfQogICAgIAogICAgIExWYWx1ZSBhbGxvY2Eo
TFR5cGUgdHlwZSkgeyByZXR1cm4gYnVpbGRBbGxvY2EobV9idWlsZGVyLCB0eXBlKTsgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaAkocmV2aXNpb24gMTYwNDk5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZTsKICAgICBH
ZW5lcmF0ZWRGdW5jdGlvbiBnZW5lcmF0ZWRGdW5jdGlvbjsKICAgICBKSVRGaW5hbGl6ZXIqIGZp
bmFsaXplcjsKKyAgICB1bnNpZ25lZCBjYXB0dXJlZFN0YWNrbWFwSUQ7CiAgICAgU2VnbWVudGVk
VmVjdG9yPEdldEJ5SWREZXNjcmlwdG9yPiBnZXRCeUlkczsKICAgICBTZWdtZW50ZWRWZWN0b3I8
UHV0QnlJZERlc2NyaXB0b3I+IHB1dEJ5SWRzOwogICAgIFZlY3RvcjxDU3RyaW5nPiBjb2RlU2Vj
dGlvbk5hbWVzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219199</attachid>
            <date>2013-12-13 14:29:05 -0800</date>
            <delta_ts>2013-12-13 15:13:55 -0800</delta_ts>
            <desc>moar</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>37943</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxNjA0OTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuIEFkZHJlc3MoYmFzZSwgb2Zmc2V0ICsgYWRkaXRpb25hbE9mZnNldCk7CiAgICAgICAgIH0K
LQorICAgICAgICAKICAgICAgICAgUmVnaXN0ZXJJRCBiYXNlOwogICAgICAgICBpbnQzMl90IG9m
ZnNldDsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDE2MDQ5OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjUsNyArMjI1LDYgQEAgc3RydWN0IFN0cnVjdHVyZVN0dWJJbmZvIHsKIAogICAgIHN0cnVj
dCB7CiAgICAgICAgIGludDhfdCByZWdpc3RlcnNGbHVzaGVkOwotICAgICAgICBpbnQ4X3QgY2Fs
bEZyYW1lUmVnaXN0ZXI7CiAgICAgICAgIGludDhfdCBiYXNlR1BSOwogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCiAgICAgICAgIGludDhfdCB2YWx1ZVRhZ0dQUjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0aW9ucy5oCShyZXZpc2lvbiAxNjA0OTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFiYnJldmlhdGlvbnMuaAkod29ya2luZyBjb3B5
KQpAQCAtNTgsNiArNTgsNyBAQCBzdGF0aWMgaW5saW5lIExUeXBlIGZsb2F0VHlwZShMQ29udGV4
dCBjCiBzdGF0aWMgaW5saW5lIExUeXBlIGRvdWJsZVR5cGUoTENvbnRleHQgY29udGV4dCkgeyBy
ZXR1cm4gbGx2bS0+RG91YmxlVHlwZUluQ29udGV4dChjb250ZXh0KTsgfQogCiBzdGF0aWMgaW5s
aW5lIExUeXBlIHBvaW50ZXJUeXBlKExUeXBlIHR5cGUpIHsgcmV0dXJuIGxsdm0tPlBvaW50ZXJU
eXBlKHR5cGUsIDApOyB9CitzdGF0aWMgaW5saW5lIExUeXBlIGFycmF5VHlwZShMVHlwZSB0eXBl
LCB1bnNpZ25lZCBjb3VudCkgeyByZXR1cm4gbGx2bS0+QXJyYXlUeXBlKHR5cGUsIGNvdW50KTsg
fQogc3RhdGljIGlubGluZSBMVHlwZSB2ZWN0b3JUeXBlKExUeXBlIHR5cGUsIHVuc2lnbmVkIGNv
dW50KSB7IHJldHVybiBsbHZtLT5WZWN0b3JUeXBlKHR5cGUsIGNvdW50KTsgfQogCiBlbnVtIFBh
Y2tpbmdNb2RlIHsgTm90UGFja2VkLCBQYWNrZWQgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2aXNpb24gMTYwNDk5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDE4ICsy
MDIsMTcgQEAgc3RhdGljIHZvaWQgZml4RnVuY3Rpb25CYXNlZE9uU3RhY2tNYXBzKAogICAgICAg
ICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjphbGxSZWdpc3Rl
cnMoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IHJlY29yZC5s
b2NhdGlvbnNbMF0uZGlyZWN0R1BSKCk7Ci0gICAgICAgICAgICBHUFJSZWcgY2FsbEZyYW1lUmVn
aXN0ZXIgPSByZWNvcmQubG9jYXRpb25zWzFdLmRpcmVjdEdQUigpOwotICAgICAgICAgICAgR1BS
UmVnIGJhc2UgPSByZWNvcmQubG9jYXRpb25zWzJdLmRpcmVjdEdQUigpOworICAgICAgICAgICAg
R1BSUmVnIGJhc2UgPSByZWNvcmQubG9jYXRpb25zWzFdLmRpcmVjdEdQUigpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgICAg
ICBjb2RlQmxvY2ssIGdldEJ5SWQuY29kZU9yaWdpbigpLCB1c2VkUmVnaXN0ZXJzLCBjYWxsRnJh
bWVSZWdpc3RlciwKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhiYXNlKSwgSlNWYWx1ZVJl
Z3MocmVzdWx0KSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGNvZGVCbG9jaywgZ2V0QnlJZC5j
b2RlT3JpZ2luKCksIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzKGJhc2UpLAorICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdCksIGZhbHNlKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGJlZ2luID0gc2xvd1BhdGhKSVQubGFiZWwoKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAgc3RhdGUsIHVzZWRSZWdpc3RlcnMsIHNsb3dQ
YXRoSklULCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3VsdCwKLSAgICAgICAgICAgICAg
ICBjYWxsRnJhbWVSZWdpc3RlciwgZ2VuLnN0dWJJbmZvKCksIGJhc2UsIGdldEJ5SWQudWlkKCkp
OworICAgICAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLCBiYXNlLCBnZXRCeUlkLnVpZCgpKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChiZWdpbiwg
Y2FsbCk7CiAgICAgICAgICAgICAKQEAgLTIzOCwyMCArMjM3LDE5IEBAIHN0YXRpYyB2b2lkIGZp
eEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICAgICAgICAgIC8vIEZJWE1FOiBMTFZNIHNo
b3VsZCB0ZWxsIHVzIHdoaWNoIHJlZ2lzdGVycyBhcmUgbGl2ZS4KICAgICAgICAgICAgIFJlZ2lz
dGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IHJlY29yZC5s
b2NhdGlvbnNbMF0uZGlyZWN0R1BSKCk7Ci0gICAgICAgICAgICBHUFJSZWcgYmFzZSA9IHJlY29y
ZC5sb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCk7Ci0gICAgICAgICAgICBHUFJSZWcgdmFsdWUgPSBy
ZWNvcmQubG9jYXRpb25zWzJdLmRpcmVjdEdQUigpOworICAgICAgICAgICAgR1BSUmVnIGJhc2Ug
PSByZWNvcmQubG9jYXRpb25zWzBdLmRpcmVjdEdQUigpOworICAgICAgICAgICAgR1BSUmVnIHZh
bHVlID0gcmVjb3JkLmxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICAgICAgY29kZUJs
b2NrLCBwdXRCeUlkLmNvZGVPcmlnaW4oKSwgdXNlZFJlZ2lzdGVycywgY2FsbEZyYW1lUmVnaXN0
ZXIsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZSksIEpTVmFsdWVSZWdzKHZhbHVl
KSwgTWFjcm9Bc3NlbWJsZXI6OnNjcmF0Y2hSZWdpc3RlciwKLSAgICAgICAgICAgICAgICBmYWxz
ZSwgcHV0QnlJZC5lY21hTW9kZSgpLCBwdXRCeUlkLnB1dEtpbmQoKSk7CisgICAgICAgICAgICAg
ICAgY29kZUJsb2NrLCBwdXRCeUlkLmNvZGVPcmlnaW4oKSwgdXNlZFJlZ2lzdGVycywgSlNWYWx1
ZVJlZ3MoYmFzZSksCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWUpLCBNYWNyb0Fz
c2VtYmxlcjo6c2NyYXRjaFJlZ2lzdGVyLCBmYWxzZSwgcHV0QnlJZC5lY21hTW9kZSgpLAorICAg
ICAgICAgICAgICAgIHB1dEJ5SWQucHV0S2luZCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGJlZ2luID0gc2xvd1BhdGhKSVQubGFiZWwoKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCA9IGNhbGxP
cGVyYXRpb24oCi0gICAgICAgICAgICAgICAgc3RhdGUsIHVzZWRSZWdpc3RlcnMsIHNsb3dQYXRo
SklULCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBjYWxsRnJhbWVSZWdpc3RlciwKLSAgICAgICAg
ICAgICAgICBnZW4uc3R1YkluZm8oKSwgdmFsdWUsIGJhc2UsIHB1dEJ5SWQudWlkKCkpOworICAg
ICAgICAgICAgICAgIHN0YXRlLCB1c2VkUmVnaXN0ZXJzLCBzbG93UGF0aEpJVCwgZ2VuLnNsb3dQ
YXRoRnVuY3Rpb24oKSwgZ2VuLnN0dWJJbmZvKCksCisgICAgICAgICAgICAgICAgdmFsdWUsIGJh
c2UsIHB1dEJ5SWQudWlkKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBnZW4ucmVwb3J0
U2xvd1BhdGhDYWxsKGJlZ2luLCBjYWxsKTsKICAgICAgICAgICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgJKHJldmlz
aW9uIDE2MDQ5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVw
b3NpdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhhZGRXaXRoT3ZlcmZsb3czMiwgImxsdm0uc2Fk
ZC53aXRoLm92ZXJmbG93LmkzMiIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RUeXBlKG1fY29udGV4dCwg
aW50MzIsIGJvb2xlYW4pLCBpbnQzMiwgaW50MzIpKSBcCiAgICAgbWFjcm8oYWRkV2l0aE92ZXJm
bG93NjQsICJsbHZtLnNhZGQud2l0aC5vdmVyZmxvdy5pNjQiLCBmdW5jdGlvblR5cGUoc3RydWN0
VHlwZShtX2NvbnRleHQsIGludDY0LCBib29sZWFuKSwgaW50NjQsIGludDY0KSkgXAogICAgIG1h
Y3JvKGRvdWJsZUFicywgImxsdm0uZmFicy5mNjQiLCBmdW5jdGlvblR5cGUoZG91YmxlVHlwZSwg
ZG91YmxlVHlwZSkpIFwKKyAgICBtYWNybyhmcmFtZUFkZHJlc3MsICJsbHZtLmZyYW1lYWRkcmVz
cyIsIGZ1bmN0aW9uVHlwZShwb2ludGVyVHlwZShpbnQ4KSwgaW50MzIpKSBcCiAgICAgbWFjcm8o
bXVsV2l0aE92ZXJmbG93MzIsICJsbHZtLnNtdWwud2l0aC5vdmVyZmxvdy5pMzIiLCBmdW5jdGlv
blR5cGUoc3RydWN0VHlwZShtX2NvbnRleHQsIGludDMyLCBib29sZWFuKSwgaW50MzIsIGludDMy
KSkgXAogICAgIG1hY3JvKG11bFdpdGhPdmVyZmxvdzY0LCAibGx2bS5zbXVsLndpdGgub3ZlcmZs
b3cuaTY0IiwgZnVuY3Rpb25UeXBlKHN0cnVjdFR5cGUobV9jb250ZXh0LCBpbnQ2NCwgYm9vbGVh
biksIGludDY0LCBpbnQ2NCkpIFwKICAgICBtYWNybyhwYXRjaHBvaW50SW50NjQsICJsbHZtLmV4
cGVyaW1lbnRhbC5wYXRjaHBvaW50Lmk2NCIsIGZ1bmN0aW9uVHlwZShpbnQ2NCwgaW50MzIsIGlu
dDMyLCByZWY4LCBpbnQzMiwgVmFyaWFkaWMpKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEpJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMSklUQ29kZS5jcHAJKHJldmlzaW9uIDE2MDQ5OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDIxICs1NCwy
NSBAQCB2b2lkIEpJVENvZGU6OmFkZERhdGFTZWN0aW9uKFJlZkNvdW50ZWRBCiAgICAgbV9kYXRh
U2VjdGlvbnMuYXBwZW5kKGRhdGFTZWN0aW9uKTsKIH0KIAotdm9pZCBKSVRDb2RlOjppbml0aWFs
aXplQ29kZShDb2RlUmVmIGVudHJ5cG9pbnQpCit2b2lkIEpJVENvZGU6OmluaXRpYWxpemVFbnRy
eXBvaW50KENvZGVSZWYgZW50cnlwb2ludCkKIHsKICAgICBtX2VudHJ5cG9pbnQgPSBlbnRyeXBv
aW50OwogfQogCit2b2lkIEpJVENvZGU6OmluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChDb2RlUHRy
IGFkZHJlc3MpCit7CisgICAgbV9hZGRyZXNzRm9yQ2FsbCA9IGFkZHJlc3M7Cit9CisKIEpJVENv
ZGU6OkNvZGVQdHIgSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwoKQogewotICAgIFJFTEVBU0VfQVNT
RVJUKG1fZW50cnlwb2ludCk7Ci0gICAgcmV0dXJuIG1fZW50cnlwb2ludC5jb2RlKCk7CisgICAg
cmV0dXJuIG1fYWRkcmVzc0ZvckNhbGw7CiB9CiAKIHZvaWQqIEpJVENvZGU6OmV4ZWN1dGFibGVB
ZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Vu
dHJ5cG9pbnQpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihtX2VudHJ5cG9p
bnQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgb2Zmc2V0OworICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihtX2FkZHJlc3NGb3JDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkp
ICsgb2Zmc2V0OwogfQogCiB2b2lkKiBKSVRDb2RlOjpkYXRhQWRkcmVzc0F0T2Zmc2V0KHNpemVf
dCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5oCShyZXZpc2lvbiAx
NjA0OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsNyArNTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFsaXplRXhp
dFRodW5rcyhDb2RlUmVmKTsKICAgICB2b2lkIGFkZEhhbmRsZShQYXNzUmVmUHRyPEV4ZWN1dGFi
bGVNZW1vcnlIYW5kbGU+KTsKICAgICB2b2lkIGFkZERhdGFTZWN0aW9uKFJlZkNvdW50ZWRBcnJh
eTxMU2VjdGlvbldvcmQ+KTsKLSAgICB2b2lkIGluaXRpYWxpemVDb2RlKENvZGVSZWYgZW50cnlw
b2ludCk7CisgICAgdm9pZCBpbml0aWFsaXplRW50cnlwb2ludChDb2RlUmVmKTsKKyAgICB2b2lk
IGluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChDb2RlUHRyKTsKICAgICAKICAgICBjb25zdCBWZWN0
b3I8UmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+PiYgaGFuZGxlcygpIGNvbnN0IHsgcmV0
dXJuIG1faGFuZGxlczsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWZDb3VudGVkQXJyYXk8TFNlY3Rp
b25Xb3JkPj4mIGRhdGFTZWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVNlY3Rpb25zOyB9
CkBAIC03Myw2ICs3NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZkNvdW50
ZWRBcnJheTxMU2VjdGlvbldvcmQ+PiBtX2RhdGFTZWN0aW9uczsKICAgICBWZWN0b3I8UmVmUHRy
PEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+PiBtX2hhbmRsZXM7CisgICAgQ29kZVB0ciBtX2FkZHJl
c3NGb3JDYWxsOwogICAgIENvZGVSZWYgbV9lbnRyeXBvaW50OwogICAgIENvZGVSZWYgbV9leGl0
VGh1bmtzOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxp
emVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZp
bmFsaXplci5jcHAJKHJldmlzaW9uIDE2MDQ5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMSklURmluYWxpemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBA
IGJvb2wgSklURmluYWxpemVyOjpmaW5hbGl6ZUZ1bmN0aW9uKCkKICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2s7CiAgICAgaWYgKGFyaXR5Q2hlY2suaXNTZXQoKSkKICAg
ICAgICAgd2l0aEFyaXR5Q2hlY2sgPSBlbnRyeXBvaW50TGlua0J1ZmZlci0+bG9jYXRpb25PZihh
cml0eUNoZWNrKTsKLSAgICBqaXRDb2RlLT5pbml0aWFsaXplQ29kZSgKKyAgICBqaXRDb2RlLT5p
bml0aWFsaXplRW50cnlwb2ludCgKICAgICAgICAgRklOQUxJWkVfREZHX0NPREUoCiAgICAgICAg
ICAgICAqZW50cnlwb2ludExpbmtCdWZmZXIsCiAgICAgICAgICAgICAoIkZUTCBlbnRyeXBvaW50
IHRodW5rIGZvciAlcyB3aXRoIExMVk0gZ2VuZXJhdGVkIGNvZGUgYXQgJXAiLCB0b0NTdHJpbmco
Q29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jay5nZXQoKSwgSklUQ29kZTo6RlRM
SklUKSkuZGF0YSgpLCBmdW5jdGlvbikpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMaW5rLmNwcAkocmV2aXNpb24gMTYwNDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTIgKzQzLDYgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiB1c2luZyBuYW1lc3BhY2UgREZHOwogCi1zdGF0aWMg
dm9pZCBjb21waWxlRW50cnkoQ0NhbGxIZWxwZXJzJiBqaXQpCi17Ci0gICAgaml0LmVtaXRGdW5j
dGlvblByb2xvZ3VlKCk7Ci0gICAgaml0LmVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRl
cihqaXQuY29kZUJsb2NrKCksIEpTU3RhY2s6OkNvZGVCbG9jayk7Ci19Ci0KIHZvaWQgbGluayhT
dGF0ZSYgc3RhdGUpCiB7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0ZS5ncmFwaC5t
X2NvZGVCbG9jazsKQEAgLTcxLDY0ICs2NSwyNSBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQog
ICAgIAogICAgIE93blB0cjxMaW5rQnVmZmVyPiBsaW5rQnVmZmVyOwogICAgIENDYWxsSGVscGVy
czo6TGFiZWwgYXJpdHlDaGVjazsKKworICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyBmcmFtZSA9
IENDYWxsSGVscGVyczo6QWRkcmVzcygKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50
ZXJSZWdpc3RlciwgLXNpemVvZih2b2lkKikpOworICAgIAogICAgIHN3aXRjaCAoc3RhdGUuZ3Jh
cGgubV9wbGFuLm1vZGUpIHsKICAgICBjYXNlIEZUTE1vZGU6IHsKLSAgICAgICAgY29tcGlsZUVu
dHJ5KGppdCk7CisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgbWFpblBhdGhKdW1wczsK
ICAgICAKLSAgICAgICAgLy8gVGhpcyBwYXJ0IGlzIG9ubHkgbmVjZXNzYXJ5IGZvciBmdW5jdGlv
bnMuIFdlIGN1cnJlbnRseSBvbmx5IGNvbXBpbGUgZnVuY3Rpb25zLgotICAgICAgICAKLSAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBmcm9tQXJpdHlDaGVjayA9IGppdC5sYWJlbCgpOwotICAg
ICAgICAKLSAgICAgICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMg
YXZhaWxhYmxlIGluIHRoZSBKU1N0YWNrLgotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MjkxCi0gICAgICAgIGppdC5hZGRQdHIoCi0g
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbChzdGF0ZS5qaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCku
b2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwKLSAgICAgICAgICAgIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgIENDYWxsSGVscGVyczo6SnVt
cCBzdGFja0NoZWNrID0gaml0LmJyYW5jaFB0cigKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6
QWJvdmUsCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhzdGF0ZS5n
cmFwaC5tX3ZtLmFkZHJlc3NPZkpTU3RhY2tMaW1pdCgpKSwKLSAgICAgICAgICAgIEdQUkluZm86
OnJlZ1QxKTsKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBmcm9tU3RhY2tDaGVjayA9IGpp
dC5sYWJlbCgpOwotICAgICAgICAKLSAgICAgICAgaml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRl
KCk7Ci0gICAgICAgIGppdC5tb3ZlKAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSks
Ci0gICAgICAgICAgICBHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgaml0LmNhbGwoR1BS
SW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwot
ICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIAotICAgICAgICBzdGFja0NoZWNrLmxpbmsoJmpp
dCk7Ci0gICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb2RlQmxv
Y2spLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgaml0LnN0
b3JlMzIoCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihDYWxsRnJhbWU6
OkxvY2F0aW9uOjplbmNvZGVBc0J5dGVjb2RlT2Zmc2V0KDApKSwKLSAgICAgICAgICAgIENDYWxs
SGVscGVyczo6dGFnRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oSlNTdGFjazo6QXJn
dW1lbnRDb3VudCkpKTsKLSAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCAmc3RhdGUuZ3JhcGgubV92bS50b3BDYWxsRnJhbWUpOwotICAgICAgICBDQ2FsbEhl
bHBlcnM6OkNhbGwgY2FsbFN0YWNrQ2hlY2sgPSBqaXQuY2FsbCgpOwotI2lmICFBU1NFUlRfRElT
QUJMRUQKLSAgICAgICAgLy8gRklYTUU6IG5lZWQgdG8gbWFrZSB0aGlzIGNhbGwgcmVnaXN0ZXIg
d2l0aCBleGNlcHRpb24gaGFuZGxpbmcgc29tZWhvdy4gVGhpcyBpcwotICAgICAgICAvLyBwYXJ0
IG9mIGEgYmlnZ2VyIHByb2JsZW06IEZUTCBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgZXhjZXB0
aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMzYyMgotICAgICAgICAvLyBVbnRpbCB0aGVuLCB1c2UgYSBKSVQgQVNTRVJULgotICAgICAg
ICBqaXQubG9hZDY0KHN0YXRlLmdyYXBoLm1fdm0uYWRkcmVzc09mRXhjZXB0aW9uKCksIEdQUklu
Zm86OnJlZ1QwKTsKLSAgICAgICAgaml0LmppdEFzc2VydElzTnVsbChHUFJJbmZvOjpyZWdUMCk7
Ci0jZW5kaWYKLSAgICAgICAgaml0Lmp1bXAoZnJvbVN0YWNrQ2hlY2spOwotICAgICAgICAKLSAg
ICAgICAgYXJpdHlDaGVjayA9IGppdC5sYWJlbCgpOwotICAgICAgICBjb21waWxlRW50cnkoaml0
KTsKICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6cGF5bG9h
ZEZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQp
KSwKLSAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKLSAgICAgICAgaml0LmJyYW5jaDMyKAor
ICAgICAgICAgICAgZnJhbWUud2l0aE9mZnNldChzaXplb2YoUmVnaXN0ZXIpICogSlNTdGFjazo6
QXJndW1lbnRDb3VudCksCisgICAgICAgICAgICBHUFJSZWc6OnJlZ1QxKTsKKyAgICAgICAgbWFp
blBhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaDMyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpBYm92ZU9yRXF1YWwsIEdQUkluZm86OnJlZ1QxLAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQotICAgICAgICAgICAg
LmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgJmppdCk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpKTsKKyAgICAgICAgaml0
LmVtaXRGdW5jdGluUHJvbG9ndWUoKTsKICAgICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIGppdC5zdG9yZTMy
KAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQ2FsbEZyYW1lOjpMb2Nh
dGlvbjo6ZW5jb2RlQXNCeXRlY29kZU9mZnNldCgwKSksCi0gICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OnRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KEpTU3RhY2s6OkFyZ3VtZW50
Q291bnQpKSk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihKU1N0YWNrOjpBcmd1
bWVudENvdW50KSk7CiAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgJnN0YXRlLmdyYXBoLm1fdm0udG9wQ2FsbEZyYW1lKTsKICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpDYWxsIGNhbGxBcml0eUNoZWNrID0gaml0LmNhbGwoKTsKICNpZiAhQVNTRVJUX0RJU0FC
TEVECkBAIC0xMzksMTYgKzk0LDIwIEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAg
IGppdC5sb2FkNjQoc3RhdGUuZ3JhcGgubV92bS5hZGRyZXNzT2ZFeGNlcHRpb24oKSwgR1BSSW5m
bzo6cmVnVDEpOwogICAgICAgICBqaXQuaml0QXNzZXJ0SXNOdWxsKEdQUkluZm86OnJlZ1QxKTsK
ICNlbmRpZgotICAgICAgICBpZiAoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIgIT0gR1BSSW5mbzo6
cmVnVDApCi0gICAgICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BS
SW5mbzo6cmVnVDApOwotICAgICAgICBqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6WmVy
bywgR1BSSW5mbzo6cmVnVDApLmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgJmppdCk7CisgICAgICAg
IGppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7CisgICAg
ICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICBtYWluUGF0aEp1bXBzLmFw
cGVuZChqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDAp
KTsKKyAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBjYWxsQXJpdHlGaXh1cCA9IGppdC5jYWxsKCk7Ci0gICAgICAgIGppdC5qdW1w
KGZyb21Bcml0eUNoZWNrKTsKLSAgICAgICAgCisgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGls
b2d1ZSgpOworICAgICAgICBtYWluUGF0aEp1bXBzKGppdC5qdW1wKCkpOworCiAgICAgICAgIGxp
bmtCdWZmZXIgPSBhZG9wdFB0cihuZXcgTGlua0J1ZmZlcihzdGF0ZS5ncmFwaC5tX3ZtLCAmaml0
LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKLSAgICAgICAgbGlua0J1
ZmZlci0+bGluayhjYWxsU3RhY2tDaGVjaywgb3BlcmF0aW9uU3RhY2tDaGVjayk7CiAgICAgICAg
IGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Q2hlY2ssIGNvZGVCbG9jay0+bV9pc0NvbnN0cnVj
dG9yID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNo
ZWNrKTsKICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25Q
dHIoKHN0YXRlLmdyYXBoLm1fdm0uZ2V0Q1RJU3R1Yihhcml0eUZpeHVwKSkuY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXBz
LCBDb2RlTG9jYXRpb25MYWJlbChzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbikpOworCisgICAgICAg
IHN0YXRlLmppdENvZGUtPmluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIoc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgICAgICAKQEAgLTE1NywxNiArMTE2LDE1IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAg
ICAgICAgIC8vIHZhbHVlcyBpbnRvIHRoZSBzY3JhdGNoIGJ1ZmZlci4gRXZlcnl0aGluZyBzaG91
bGQgYmUgZ29vZCB0byBnbyAtIGF0IHRoaXMKICAgICAgICAgLy8gcG9pbnQgd2UndmUgZXZlbiBk
b25lIHRoZSBzdGFjayBjaGVjay4gQmFzaWNhbGx5IHdlIGp1c3QgaGF2ZSB0byBtYWtlIHRoZQog
ICAgICAgICAvLyBjYWxsIHRvIHRoZSBMTFZNLWdlbmVyYXRlZCBjb2RlLgotICAgICAgICBqaXQu
c2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKTsKLSAgICAgICAgaml0Lm1vdmUoCi0gICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3Rh
dGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSwKLSAgICAgICAgICAgIEdQUkluZm86Om5vbkFyZ0dQUjAp
OwotICAgICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpMYWJlbCBzdGFydCA9IGppdC5sYWJlbCgpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoKTsKLSAgICAgICAgaml0LnJldCgpOworICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgbWFpblBhdGhKdW1wID0gaml0Lmp1bXAoKTsKICAgICAgICAgCiAgICAgICAgIGxpbmtC
dWZmZXIgPSBhZG9wdFB0cihuZXcgTGlua0J1ZmZlcigKICAgICAgICAgICAgIHN0YXRlLmdyYXBo
Lm1fdm0sICZqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkpOworICAg
ICAgICBsaW5rQnVmZmVyLT5saW5rKG1haW5QYXRoSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWwoc3Rh
dGUuZ2VuZXJhdGVkRnVuY3Rpb24pKTsKKworICAgICAgICBzdGF0ZS5qaXRDb2RlLT5pbml0aWFs
aXplQWRkcmVzc0ZvckNhbGwobGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGFydCkpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE2MDQ5OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw2ICs1MSwxMCBAQCB1c2luZyBuYW1lc3BhY2UgREZHOwogCiBzdGF0aWMgaW50IGNv
bXBpbGVDb3VudGVyOwogCisvLyBGSVhNRTogR2V0IHJpZCBvZiB0aGlzIGFuZCBpbnRyb2R1Y2Ug
YSByZWFsIHN0YWNrIGNoZWNrLgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNTY1MAorc3RhdGljIHVpbnRwdHJfdCBzdGFja0xpbWl0OworCiAvLyBVc2luZyB0
aGlzIGluc3RlYWQgb2YgdHlwZUNoZWNrKCkgaGVscHMgdG8gcmVkdWNlIHRoZSBsb2FkIG9uIExM
Vk0sIGJ5IGNyZWF0aW5nCiAvLyBzaWduaWZpY2FudGx5IGxlc3MgZGVhZCBjb2RlLgogI2RlZmlu
ZSBGVExfVFlQRV9DSEVDSyhsb3dWYWx1ZSwgaGlnaFZhbHVlLCB0eXBlc1Bhc3NlZFRocm91Z2gs
IGZhaWxDb25kaXRpb24pIGRvIHsgXApAQCAtOTIsMTYgKzk2LDI5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGxsdm0tPk1vZHVsZUNyZWF0ZVdpdGhOYW1lSW5Db250ZXh0KG5hbWUuZGF0YSgpLCBt
X2Z0bFN0YXRlLmNvbnRleHQpOwogICAgICAgICAKICAgICAgICAgbV9mdGxTdGF0ZS5mdW5jdGlv
biA9IGFkZEZ1bmN0aW9uKAotICAgICAgICAgICAgbV9mdGxTdGF0ZS5tb2R1bGUsIG5hbWUuZGF0
YSgpLCBmdW5jdGlvblR5cGUobV9vdXQuaW50NjQsIG1fb3V0LmludFB0cikpOworICAgICAgICAg
ICAgbV9mdGxTdGF0ZS5tb2R1bGUsIG5hbWUuZGF0YSgpLCBmdW5jdGlvblR5cGUobV9vdXQuaW50
NjQpKTsKICAgICAgICAgc2V0RnVuY3Rpb25DYWxsaW5nQ29udihtX2Z0bFN0YXRlLmZ1bmN0aW9u
LCBMTFZNQ0NhbGxDb252KTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmluaXRpYWxpemUobV9m
dGxTdGF0ZS5tb2R1bGUsIG1fZnRsU3RhdGUuZnVuY3Rpb24sIG1faGVhcHMpOwogICAgICAgICAK
LSAgICAgICAgbV9wcm9sb2d1ZSA9IGFwcGVuZEJhc2ljQmxvY2sobV9mdGxTdGF0ZS5jb250ZXh0
LCBtX2Z0bFN0YXRlLmZ1bmN0aW9uKTsKLSAgICAgICAgbV9vdXQuYXBwZW5kVG8obV9wcm9sb2d1
ZSk7CisgICAgICAgIG1fcHJvbG9ndWUgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlByb2xvZ3Vl
IikpOworICAgICAgICBMQmFzaWNCbG9jayBzdGFja092ZXJmbG93ID0gRlRMX05FV19CTE9DSyht
X291dCwgKCJTdGFjayBvdmVyZmxvdyIpKTsKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obV9wcm9s
b2d1ZSwgc3RhY2tPdmVyZmxvdyk7CiAgICAgICAgIGNyZWF0ZVBoaVZhcmlhYmxlcygpOworICAg
ICAgICBtX2NhcHR1cmVkID0gbV9vdXQucHRyVG9JbnQoCisgICAgICAgICAgICBtX291dC5hbGxv
Y2EoYXJyYXlUeXBlKG1fb3V0LmludDY0LCBtX2dyYXBoLm1fbmV4dE1hY2hpbmVMb2NhbCkpLAor
ICAgICAgICAgICAgbV9vdXQuaW50UHRyKTsKKyAgICAgICAgCisgICAgICAgIC8vIFdlIHNob3Vs
ZCBub3QgY3JlYXRlIGFueSBhbGxvY2EncyBhZnRlciB0aGlzIHBvaW50LCBzaW5jZSB0aGV5IHdp
bGwgY2Vhc2UgdG8KKyAgICAgICAgLy8gYmUgbWVtMnJlZyBjYW5kaWRhdGVzLgorICAgICAgICAK
KyAgICAgICAgbV9mdGxTdGF0ZS5jYXB0dXJlZFN0YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7
CisgICAgICAgIG1fb3V0LmNhbGwoCisgICAgICAgICAgICBtX291dC5zdGFja21hcEludHJpbnNp
YygpLCBtX291dC5jb25zdEludDMyKG1fZnRsU3RhdGUuY2FwdHVyZWRTdGFja21hcElEKSwKKyAg
ICAgICAgICAgIG1fb3V0LmludDMyWmVybyk7CiAgICAgICAgIAotICAgICAgICBtX2NhbGxGcmFt
ZSA9IG1fb3V0LnBhcmFtKDApOworICAgICAgICBtX2NhbGxGcmFtZSA9IG1fb3V0LnB0clRvSW50
KAorICAgICAgICAgICAgbV9vdXQuY2FsbChtX291dC5mcmFtZUFkZHJlc3NJbnRyaW5zaWMoKSwg
bV9vdXQuaW50MzJaZXJvKSwgbV9vdXQuaW50UHRyKTsKICAgICAgICAgbV90YWdUeXBlTnVtYmVy
ID0gbV9vdXQuY29uc3RJbnQ2NChUYWdUeXBlTnVtYmVyKTsKICAgICAgICAgbV90YWdNYXNrID0g
bV9vdXQuY29uc3RJbnQ2NChUYWdNYXNrKTsKICAgICAgICAgCkBAIC0xMTIsOCArMTI5LDE0IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1fYmxvY2tzLmFkZChtX2hpZ2hCbG9jaywgRlRMX05FV19C
TE9DSyhtX291dCwgKCJCbG9jayAiLCAqbV9oaWdoQmxvY2spKSk7CiAgICAgICAgIH0KICAgICAg
ICAgCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKG1fcHJvbG9ndWUpOwotICAgICAgICBtX291dC5q
dW1wKGxvd0Jsb2NrKG1fZ3JhcGguYmxvY2soMCkpKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIo
bV9vdXQuY29uc3RJbnRQdHIoY29kZUJsb2NrKCkpLCBhZGRyZXNzRm9yKEpTU3RhY2s6OkNvZGVC
bG9jaykpOworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5iZWxvdyht
X2NhbGxGcmFtZSwgbV9vdXQubG9hZFB0cihtX291dC5hYnNvbHV0ZSgmc3RhY2tMaW1pdCkpKSwK
KyAgICAgICAgICAgIHN0YWNrT3ZlcmZsb3csIGxvd0Jsb2NrKG1fZ3JhcGguYmxvY2soMCkpKTsK
KyAgICAgICAgCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHN0YWNrT3ZlcmZsb3csIGxvd0Jsb2Nr
KG1fZ3JhcGguYmxvY2soMCkpKTsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBleGNlcHRpb25z
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjIyCisgICAgICAg
IG1fb3V0LmNyYXNoKCk7CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IGRl
cHRoRmlyc3Q7CiAgICAgICAgIG1fZ3JhcGguZ2V0QmxvY2tzSW5EZXB0aEZpcnN0T3JkZXIoZGVw
dGhGaXJzdCk7CkBAIC0xMjcwLDcgKzEyOTMsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUg
Y2FsbCA9IG1fb3V0LmNhbGwoCiAgICAgICAgICAgICBtX291dC5wYXRjaHBvaW50SW50NjRJbnRy
aW5zaWMoKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoc3RhY2ttYXBJRCksIG1fb3V0
LmNvbnN0SW50MzIoc2l6ZU9mR2V0QnlJZCgpKSwKLSAgICAgICAgICAgIGNvbnN0TnVsbChtX291
dC5yZWY4KSwgbV9vdXQuY29uc3RJbnQzMigyKSwgbV9jYWxsRnJhbWUsIGJhc2UpOworICAgICAg
ICAgICAgY29uc3ROdWxsKG1fb3V0LnJlZjgpLCBtX291dC5jb25zdEludDMyKDEpLCBiYXNlKTsK
ICAgICAgICAgc2V0SW5zdHJ1Y3Rpb25DYWxsaW5nQ29udmVudGlvbihjYWxsLCBMTFZNQW55UmVn
Q2FsbENvbnYpOwogICAgICAgICBzZXRKU1ZhbHVlKGNhbGwpOwogICAgICAgICAKQEAgLTEyOTUs
NyArMTMxOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBjYWxsID0gbV9vdXQuY2FsbCgK
ICAgICAgICAgICAgIG1fb3V0LnBhdGNocG9pbnRWb2lkSW50cmluc2ljKCksCiAgICAgICAgICAg
ICBtX291dC5jb25zdEludDMyKHN0YWNrbWFwSUQpLCBtX291dC5jb25zdEludDMyKHNpemVPZlB1
dEJ5SWQoKSksCi0gICAgICAgICAgICBjb25zdE51bGwobV9vdXQucmVmOCksIG1fb3V0LmNvbnN0
SW50MzIoMyksIG1fY2FsbEZyYW1lLCBiYXNlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb25zdE51
bGwobV9vdXQucmVmOCksIG1fb3V0LmNvbnN0SW50MzIoMiksIGJhc2UsIHZhbHVlKTsKICAgICAg
ICAgc2V0SW5zdHJ1Y3Rpb25DYWxsaW5nQ29udmVudGlvbihjYWxsLCBMTFZNQW55UmVnQ2FsbENv
bnYpOwogICAgICAgICAKICAgICAgICAgbV9mdGxTdGF0ZS5wdXRCeUlkcy5hcHBlbmQoUHV0QnlJ
ZERlc2NyaXB0b3IoCkBAIC00MDAzLDcgKzQwMjYsNiBAQCBwcml2YXRlOgogICAgICAgICBPU1JF
eGl0JiBleGl0LCBFeGl0QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIEZvcm1hdHRlZFZhbHVlIGxv
d1ZhbHVlLAogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiAgICAgewotICAgICAgICBh
cmd1bWVudHMuYXBwZW5kKG1fY2FsbEZyYW1lKTsKICAgICAgICAgaWYgKCEhbG93VmFsdWUpCiAg
ICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKGxvd1ZhbHVlLnZhbHVlKCkpOwogICAgICAgICAK
QEAgLTQyNjAsMzUgKzQyODIsNDAgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgVHlwZWRQb2ludGVy
IHBheWxvYWRGb3IoTFZhbHVlIGJhc2UsIGludCBvcGVyYW5kKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkZHJlc3NGb3IoYmFzZSwgb3BlcmFuZCwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7CisgICAgICAgIHJldHVybiBhZGRyZXNzRm9y
KGJhc2UsIG9wZXJhbmQsIFBheWxvYWRPZmZzZXQpOwogICAgIH0KICAgICBUeXBlZFBvaW50ZXIg
dGFnRm9yKExWYWx1ZSBiYXNlLCBpbnQgb3BlcmFuZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZGRyZXNzRm9yKGJhc2UsIG9wZXJhbmQsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yLCBhc0JpdHMudGFnKSk7CisgICAgICAgIHJldHVybiBhZGRyZXNzRm9yKGJhc2UsIG9w
ZXJhbmQsIFRhZ09mZnNldCk7CiAgICAgfQotICAgIFR5cGVkUG9pbnRlciBhZGRyZXNzRm9yKGlu
dCBvcGVyYW5kKQorICAgIFR5cGVkUG9pbnRlciBhZGRyZXNzRm9yKGludCBvcGVyYW5kLCBwdHJk
aWZmX3Qgb2Zmc2V0ID0gMCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZGRyZXNzRm9yKG1fY2Fs
bEZyYW1lLCBvcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuIGFkZHJlc3NGb3IoVmlydHVhbFJlZ2lz
dGVyKG9wZXJhbmQpLCBvZmZzZXQpOwogICAgIH0KLSAgICBUeXBlZFBvaW50ZXIgYWRkcmVzc0Zv
cihWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKKyAgICBUeXBlZFBvaW50ZXIgYWRkcmVzc0ZvcihW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgcHRyZGlmZl90IG9mZnNldCA9IDApCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRkcmVzc0ZvcihtX2NhbGxGcmFtZSwgb3BlcmFuZC5vZmZzZXQoKSk7Cisg
ICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkgeworICAgICAgICAgICAgcmV0dXJuIFR5cGVk
UG9pbnRlcigKKyAgICAgICAgICAgICAgICBtX2hlYXBzLnZhcmlhYmxlc1tvcGVyYW5kLm9mZnNl
dCgpXSwKKyAgICAgICAgICAgICAgICBtX291dC5hZGQobV9jYXB0dXJlZCwgb3BlcmFuZC50b0xv
Y2FsKCkgKiBzaXplb2YoUmVnaXN0ZXIpKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGFk
ZHJlc3NGb3IobV9jYWxsRnJhbWUsIG9wZXJhbmQub2Zmc2V0KCksIG9mZnNldCk7CiAgICAgfQog
ICAgIFR5cGVkUG9pbnRlciBwYXlsb2FkRm9yKGludCBvcGVyYW5kKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHBheWxvYWRGb3IobV9jYWxsRnJhbWUsIG9wZXJhbmQpOworICAgICAgICByZXR1cm4g
cGF5bG9hZEZvcihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkpOwogICAgIH0KICAgICBUeXBlZFBv
aW50ZXIgcGF5bG9hZEZvcihWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBwYXlsb2FkRm9yKG1fY2FsbEZyYW1lLCBvcGVyYW5kLm9mZnNldCgpKTsKKyAgICAg
ICAgcmV0dXJuIGFkZHJlc3NGb3Iob3BlcmFuZCwgUGF5bG9hZE9mZnNldCk7CiAgICAgfQogICAg
IFR5cGVkUG9pbnRlciB0YWdGb3IoaW50IG9wZXJhbmQpCiAgICAgewotICAgICAgICByZXR1cm4g
dGFnRm9yKG1fY2FsbEZyYW1lLCBvcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuIHRhZ0ZvcihWaXJ0
dWFsUmVnaXN0ZXIob3BlcmFuZCkpOwogICAgIH0KICAgICBUeXBlZFBvaW50ZXIgdGFnRm9yKFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRhZ0ZvcihtX2Nh
bGxGcmFtZSwgb3BlcmFuZC5vZmZzZXQoKSk7CisgICAgICAgIHJldHVybiBhZGRyZXNzRm9yKG9w
ZXJhbmQsIFRhZ09mZnNldCk7CiAgICAgfQogICAgIAogICAgIFZNJiB2bSgpIHsgcmV0dXJuIG1f
Z3JhcGgubV92bTsgfQpAQCAtNDMwMyw2ICs0MzMwLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFw
PEJhc2ljQmxvY2sqLCBMQmFzaWNCbG9jaz4gbV9ibG9ja3M7CiAgICAgCiAgICAgTFZhbHVlIG1f
Y2FsbEZyYW1lOworICAgIExWYWx1ZSBtX2NhcHR1cmVkOwogICAgIExWYWx1ZSBtX3RhZ1R5cGVO
dW1iZXI7CiAgICAgTFZhbHVlIG1fdGFnTWFzazsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDE2MDQ5
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzksMTMgKzc5LDEyIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHVi
KAogICAgIAogICAgIC8vIEdldCB0aGUgY2FsbCBmcmFtZSBhbmQgdGFnIHRoaW5naWVzLgogICAg
IC8vIFJlc3RvcmUgdGhlIGV4aXRpbmcgZnVuY3Rpb24ncyBjYWxsRnJhbWUgdmFsdWUgaW50byBh
IHJlZ1Q0Ci0gICAgcmVjb3JkLT5sb2NhdGlvbnNbMF0ucmVzdG9yZUludG8oaml0LCBqaXRDb2Rl
LT5zdGFja21hcHMsIHJlZ2lzdGVyU2NyYXRjaCwgR1BSSW5mbzo6cmVnVDQpOwogICAgIGppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlciksIEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CiAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW02NChUYWdNYXNrKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKICAgICAKICAg
ICAvLyBEbyBzb21lIHZhbHVlIHByb2ZpbGluZy4KICAgICBpZiAoZXhpdC5tX3Byb2ZpbGVWYWx1
ZUZvcm1hdCAhPSBJbnZhbGlkVmFsdWVGb3JtYXQpIHsKLSAgICAgICAgcmVjb3JkLT5sb2NhdGlv
bnNbMV0ucmVzdG9yZUludG8oaml0LCBqaXRDb2RlLT5zdGFja21hcHMsIHJlZ2lzdGVyU2NyYXRj
aCwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICByZWNvcmQtPmxvY2F0aW9uc1swXS5yZXN0b3Jl
SW50byhqaXQsIGppdENvZGUtPnN0YWNrbWFwcywgcmVnaXN0ZXJTY3JhdGNoLCBHUFJJbmZvOjpy
ZWdUMCk7CiAgICAgICAgIHJlYm94QWNjb3JkaW5nVG9Gb3JtYXQoCiAgICAgICAgICAgICBleGl0
Lm1fcHJvZmlsZVZhbHVlRm9ybWF0LCBqaXQsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdU
MSwgR1BSSW5mbzo6cmVnVDIpOwogICAgICAgICAKQEAgLTEyOSw3ICsxMjgsNyBAQCBzdGF0aWMg
dm9pZCBjb21waWxlU3R1YigKICAgICAgICAgY2FzZSBFeGl0VmFsdWVJbkpTU3RhY2tBc0ludDMy
OgogICAgICAgICBjYXNlIEV4aXRWYWx1ZUluSlNTdGFja0FzSW50NTI6CiAgICAgICAgIGNhc2Ug
RXhpdFZhbHVlSW5KU1N0YWNrQXNEb3VibGU6Ci0gICAgICAgICAgICBqaXQubG9hZDY0KEFzc2Vt
Ymx5SGVscGVyczo6YWRkcmVzc0Zvcih2YWx1ZS52aXJ0dWFsUmVnaXN0ZXIoKSwgR1BSSW5mbzo6
cmVnVDQpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5
SGVscGVyczo6YWRkcmVzc0Zvcih2YWx1ZS52aXJ0dWFsUmVnaXN0ZXIoKSksIEdQUkluZm86OnJl
Z1QwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6
CkBAIC0xNDksMTkgKzE0OCw5IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgICAgICBq
aXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICByZWJv
eEFjY29yZGluZ1RvRm9ybWF0KAogICAgICAgICAgICAgdmFsdWUudmFsdWVGb3JtYXQoKSwgaml0
LCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKLSAgICAg
ICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zv
cihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpLCBHUFJJbmZvOjpyZWdUNCkp
OworICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjph
ZGRyZXNzRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkpKTsKICAgICB9
CiAgICAgCi0gICAgLy8gUmVzdG9yZSB0aGUgb2xkIHN0YWNrIHBvaW50ZXIgYW5kIHRoZW4gcHV0
IHJlZ1Q0IGludG8gY2FsbEZyYW1lUmVnaXN0ZXIuIFRoZSBpZGVhIGlzCi0gICAgLy8gdGhhdCB0
aGUgRlRMIGNhbGwgZnJhbWUgaXMgcHVzaGVkIG9udG8gdGhlIEpTIGNhbGwgZnJhbWUgYW5kIHdl
IGNhbiByZWNvdmVyIHRoZSBvbGQKLSAgICAvLyB2YWx1ZSBvZiB0aGUgc3RhY2sgcG9pbnRlciBi
eSBwb3BwaW5nIHRoZSBGVEwgY2FsbCBmcmFtZS4gV2UgYWxyZWFkeSBrbm93IHdoYXQgdGhlCi0g
ICAgLy8gZnJhbWUgcG9pbnRlciBpbiB0aGUgSlMgY2FsbCBmcmFtZSB3YXMgYmVjYXVzZSBpdCB3
b3VsZCBoYXZlIGJlZW4gcGFzc2VkIGFzIGFuIGFyZ3VtZW50Ci0gICAgLy8gdG8gdGhlIEZUTCBj
YWxsIGZyYW1lLgotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdp
c3RlciwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBqaXQucG9w
KEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgIGppdC5wb3AoR1BSSW5mbzo6bm9uQXJnR1BSMCk7
Ci0gICAgaml0Lm1vdmUoR1BSSW5mbzo6cmVnVDQsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKLSAgICAKICAgICBoYW5kbGVFeGl0Q291bnRzKGppdCwgZXhpdCk7CiAgICAgcmVpZnlJbmxp
bmVkQ2FsbEZyYW1lcyhqaXQsIGV4aXQpOwogICAgIGFkanVzdEFuZEp1bXBUb1RhcmdldChqaXQs
IGV4aXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCShyZXZpc2lv
biAxNjA0OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTAsNiArMjEwLDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBjYXN0VG9J
bnQzMihMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIGludENhc3QodmFsdWUsIGludDMyKTsgfQogICAg
IExWYWx1ZSBmcENhc3QoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBidWlsZEZQ
Q2FzdChtX2J1aWxkZXIsIHZhbHVlLCB0eXBlKTsgfQogICAgIExWYWx1ZSBpbnRUb1B0cihMVmFs
dWUgdmFsdWUsIExUeXBlIHR5cGUpIHsgcmV0dXJuIGJ1aWxkSW50VG9QdHIobV9idWlsZGVyLCB2
YWx1ZSwgdHlwZSk7IH0KKyAgICBMVmFsdWUgcHRyVG9JbnQoTFZhbHVlIHZhbHVlLCBMVHlwZSB0
eXBlKSB7IHJldHVybiBidWlsZFB0clRvSW50KG1fYnVpbGRlciwgdmFsdWUsIHR5cGUpOyB9CiAg
ICAgTFZhbHVlIGJpdENhc3QoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBidWls
ZEJpdENhc3QobV9idWlsZGVyLCB2YWx1ZSwgdHlwZSk7IH0KICAgICAKICAgICBMVmFsdWUgYWxs
b2NhKExUeXBlIHR5cGUpIHsgcmV0dXJuIGJ1aWxkQWxsb2NhKG1fYnVpbGRlciwgdHlwZSk7IH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAJ
KHJldmlzaW9uIDE2MDQ5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1Bh
dGhDYWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDEzICsxNTgsMTMgQEAgcHJpdmF0ZToK
IH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCiBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKAotICAgIFN0YXRlJiBzdGF0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMsIENDYWxsSGVscGVycyYgaml0LCAKLSAgICBKX0pJVE9wZXJhdGlvbl9FU3NpSkkgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIsCi0gICAgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgb2JqZWN0LCBTdHJpbmdJbXBsKiB1aWQpCisg
ICAgU3RhdGUmIHN0YXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxI
ZWxwZXJzJiBqaXQsCisgICAgSl9KSVRPcGVyYXRpb25fRVNzaUpJIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgb2JqZWN0LAorICAg
IFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBDYWxsQ29udGV4dCBjb250ZXh0KHN0YXRlLCB1c2Vk
UmVnaXN0ZXJzLCBqaXQsIDQsIHJlc3VsdCk7Ci0gICAgaml0LnNldHVwQXJndW1lbnRzKAotICAg
ICAgICBjYWxsRnJhbWVSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0dWJJ
bmZvKSwgb2JqZWN0LAorICAgIGppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoCisgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHViSW5mbyksIG9iamVjdCwKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHVpZCkpOwogICAgIHJldHVybiBjb250ZXh0
Lm1ha2VDYWxsKGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uKSk7CiAgICAgLy8gRklYTUU6
IEZUTCBzaG91bGQgc3VwcG9ydCBleGNlcHRpb25zLgpAQCAtMTczLDEyICsxNzMsMTIgQEAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbigKIAogTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbigKICAgICBTdGF0ZSYgc3RhdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgCi0gICAgVl9KSVRPcGVyYXRpb25fRVNzaUpK
SSBvcGVyYXRpb24sIEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciwKLSAgICBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIG9iamVjdCwgU3RyaW5nSW1wbCog
dWlkKQorICAgIFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgb3BlcmF0aW9uLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIG9iamVjdCwKKyAgICBTdHJpbmdJ
bXBsKiB1aWQpCiB7CiAgICAgQ2FsbENvbnRleHQgY29udGV4dChzdGF0ZSwgdXNlZFJlZ2lzdGVy
cywgaml0LCA1LCBJbnZhbGlkR1BSUmVnKTsKLSAgICBqaXQuc2V0dXBBcmd1bWVudHMoCi0gICAg
ICAgIGNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3R1Yklu
Zm8pLCB2YWx1ZSwgb2JqZWN0LAorICAgIGppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
CisgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHViSW5mbyksIHZhbHVlLCBv
YmplY3QsCiAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih1aWQpKTsKICAgICBy
ZXR1cm4gY29udGV4dC5tYWtlQ2FsbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbikpOwog
ICAgIC8vIEZJWE1FOiBGVEwgc2hvdWxkIHN1cHBvcnQgZXhjZXB0aW9ucy4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAkocmV2aXNpb24gMTYwNDk5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsMTIgKzU3LDEwIEBAIHByaXZhdGU6CiAKIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oCiAgICAgU3RhdGUmLCBjb25zdCBSZWdpc3RlclNldCYsIENDYWxs
SGVscGVycyYsIEpfSklUT3BlcmF0aW9uX0VTc2lKSSwKLSAgICBHUFJSZWcgcmVzdWx0LCBHUFJS
ZWcgY2FsbEZyYW1lUmVnaXN0ZXIsIFN0cnVjdHVyZVN0dWJJbmZvKiwgR1BSUmVnIG9iamVjdCwK
LSAgICBTdHJpbmdJbXBsKiB1aWQpOworICAgIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgR1BSUmVnIG9iamVjdCwgU3RyaW5nSW1wbCogdWlkKTsKIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oCiAgICAgU3RhdGUmLCBjb25zdCBSZWdpc3RlclNldCYsIENDYWxs
SGVscGVycyYsIFZfSklUT3BlcmF0aW9uX0VTc2lKSkksCi0gICAgR1BSUmVnIGNhbGxGcmFtZVJl
Z2lzdGVyLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIG9iamVjdCwK
LSAgICBTdHJpbmdJbXBsKiB1aWQpOworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiwgR1BSUmVnIHZh
bHVlLCBHUFJSZWcgb2JqZWN0LCBTdHJpbmdJbXBsKiB1aWQpOwogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6RlRMCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgJKHJldmlz
aW9uIDE2MDQ5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEpJVENvZGU+
IGppdENvZGU7CiAgICAgR2VuZXJhdGVkRnVuY3Rpb24gZ2VuZXJhdGVkRnVuY3Rpb247CiAgICAg
SklURmluYWxpemVyKiBmaW5hbGl6ZXI7CisgICAgdW5zaWduZWQgY2FwdHVyZWRTdGFja21hcElE
OwogICAgIFNlZ21lbnRlZFZlY3RvcjxHZXRCeUlkRGVzY3JpcHRvcj4gZ2V0QnlJZHM7CiAgICAg
U2VnbWVudGVkVmVjdG9yPFB1dEJ5SWREZXNjcmlwdG9yPiBwdXRCeUlkczsKICAgICBWZWN0b3I8
Q1N0cmluZz4gY29kZVNlY3Rpb25OYW1lczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTYwNDk5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDcg
KzIxNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQWRkcmVzcyB0YWdGb3IoVmlydHVhbFJlZ2lz
dGVyIHZpcnR1YWxSZWdpc3RlcikKICAgICB7CiAgICAgICAgIEFTU0VSVCh2aXJ0dWFsUmVnaXN0
ZXIuaXNWYWxpZCgpKTsKLSAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIHZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikgKyBP
QkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOworICAg
ICAgICByZXR1cm4gQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgdmlydHVhbFJl
Z2lzdGVyLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSArIFRhZ09mZnNldCk7CiAgICAgfQog
ICAgIHN0YXRpYyBBZGRyZXNzIHRhZ0ZvcihpbnQgb3BlcmFuZCkKICAgICB7CkBAIC0yMjYsNyAr
MjI2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBBZGRyZXNzIHBheWxvYWRGb3IoVmlydHVhbFJl
Z2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKICAgICB7CiAgICAgICAgIEFTU0VSVCh2aXJ0dWFsUmVn
aXN0ZXIuaXNWYWxpZCgpKTsKLSAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIHZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rlcikg
KyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQp
KTsKKyAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHZp
cnR1YWxSZWdpc3Rlci5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikgKyBQYXlsb2FkT2Zmc2V0
KTsKICAgICB9CiAgICAgc3RhdGljIEFkZHJlc3MgcGF5bG9hZEZvcihpbnQgb3BlcmFuZCkKICAg
ICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTYwNDk5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDcgKzQ5LDcgQEAgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OkpJVElubGluZUNhY2hlRwog
CiBKSVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKAogICAgIENvZGVCbG9jayogY29k
ZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLAotICAgIEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciwgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgdmFsdWUsIGJvb2wgcmVnaXN0ZXJzRmx1c2hlZCkKKyAgICBKU1ZhbHVlUmVn
cyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgYm9vbCByZWdpc3RlcnNGbHVzaGVkKQogICAgIDog
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luKQogICAgICwgbV9i
YXNlKGJhc2UpCiAgICAgLCBtX3ZhbHVlKHZhbHVlKQpAQCAtNjIsNyArNjIsNiBAQCBKSVRCeUlk
R2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKAogICAgIG1fc3R1YkluZm8tPnBhdGNoLnVzZWRS
ZWdpc3RlcnMuc2V0KGJhc2UpOwogICAgIG1fc3R1YkluZm8tPnBhdGNoLnVzZWRSZWdpc3RlcnMu
c2V0KHZhbHVlKTsKICAgICAKLSAgICBtX3N0dWJJbmZvLT5wYXRjaC5jYWxsRnJhbWVSZWdpc3Rl
ciA9IHN0YXRpY19jYXN0PGludDhfdD4oY2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgIG1fc3R1Yklu
Zm8tPnBhdGNoLmJhc2VHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGJhc2UucGF5bG9hZEdQUigp
KTsKICAgICBtX3N0dWJJbmZvLT5wYXRjaC52YWx1ZUdQUiA9IHN0YXRpY19jYXN0PGludDhfdD4o
dmFsdWUucGF5bG9hZEdQUigpKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtMTMwLDExICsx
MjksOSBAQCB2b2lkIEpJVEdldEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhCiAKIEpJVFB1
dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsCi0gICAgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyLCBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsCi0gICAgYm9vbCByZWdpc3RlcnNGbHVz
aGVkLCBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kKQotICAgIDogSklUQnlJZEdl
bmVyYXRvcigKLSAgICAgICAgY29kZUJsb2NrLCBjb2RlT3JpZ2luLCB1c2VkUmVnaXN0ZXJzLCBj
YWxsRnJhbWVSZWdpc3RlciwgYmFzZSwgdmFsdWUsCi0gICAgICAgIHJlZ2lzdGVyc0ZsdXNoZWQp
CisgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNo
LCBib29sIHJlZ2lzdGVyc0ZsdXNoZWQsCisgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQg
cHV0S2luZCkKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCB1
c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwgcmVnaXN0ZXJzRmx1c2hlZCkKICAgICAsIG1fc2Ny
YXRjaChzY3JhdGNoKQogICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAgICAsIG1fcHV0S2lu
ZChwdXRLaW5kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTYwNDk5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Niw4ICs1Niw4IEBAIHByb3RlY3RlZDoKICAgICBKSVRCeUlkR2VuZXJhdG9yKCkgeyB9CiAK
ICAgICBKSVRCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBj
b25zdCBSZWdpc3RlclNldCYsIEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciwKLSAgICAgICAgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIGJvb2wgcmVnaXN0ZXJzRmx1c2hlZCk7
CisgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIGNvbnN0IFJlZ2lzdGVyU2V0JiwgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsCisgICAgICAgIGJvb2wgcmVnaXN0ZXJz
Rmx1c2hlZCk7CiAgICAgCiBwdWJsaWM6CiAgICAgdm9pZCByZXBvcnRTbG93UGF0aENhbGwoTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIHNsb3dQYXRoQmVnaW4sIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGwpCkBAIC05NiwxMSArOTYsOCBAQCBwdWJsaWM6CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
KAogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgR1BSUmVnIGNhbGxGcmFt
ZVJlZ2lzdGVyLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwKLSAgICAgICAg
Ym9vbCByZWdpc3RlcnNGbHVzaGVkKQotICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoCi0gICAg
ICAgICAgICBjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIHVzZWRSZWdpc3RlcnMsIGNhbGxGcmFtZVJl
Z2lzdGVyLCBiYXNlLCB2YWx1ZSwKLSAgICAgICAgICAgIHJlZ2lzdGVyc0ZsdXNoZWQpCisgICAg
ICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBib29sIHJlZ2lzdGVyc0Zs
dXNoZWQpCisgICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4s
IHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCByZWdpc3RlcnNGbHVzaGVkKQogICAgIHsKICAg
ICB9CiAgICAgCkBAIC0xMTIsOSArMTA5LDggQEAgcHVibGljOgogICAgIEpJVFB1dEJ5SWRHZW5l
cmF0b3IoKSB7IH0KIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9j
ayosIENvZGVPcmlnaW4sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcg
Y2FsbEZyYW1lUmVnaXN0ZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgYm9vbCByZWdpc3RlcnNGbHVzaGVkLAotICAgICAgICBF
Q01BTW9kZSwgUHV0S2luZCk7CisgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLAorICAgICAgICBK
U1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIGJvb2wgcmVnaXN0ZXJzRmx1c2hlZCwg
RUNNQU1vZGUsIFB1dEtpbmQpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNy
b0Fzc2VtYmxlciYpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwCShyZXZpc2lvbiAxNjA0OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMSArNDcsNiBAQCBuYW1lc3BhY2UgSlNDIHsK
IC8vIHRoYXQgd291bGQgb3JkaW5hcmlseSBoYXZlIHdlbGwta25vd24gdmFsdWVzOgogLy8gLSB0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIKIC8vIC0gdGFnTWFza1JlZ2lzdGVyCi0vLyAtIGNhbGxGcmFt
ZVJlZ2lzdGVyICoqCi0vLwotLy8gV2UgY3VycmVudGx5IG9ubHkgdXNlIHRoZSBjYWxsRnJhbWVS
ZWdpc3RlciBmb3IgY2xvc3VyZSBjYWxsIHBhdGNoaW5nLCBhbmQgd2UncmUgbm90IGdvaW5nIHRv
Ci0vLyBnaXZlIHRoZSBGVEwgY2xvc3VyZSBjYWxsIHBhdGNoaW5nIHN1cHBvcnQgdW50aWwgd2Ug
c3dpdGNoIHRvIHRoZSBDIHN0YWNrIC0gYnV0IHdoZW4gd2UgZG8gdGhhdCwKLS8vIGNhbGxGcmFt
ZVJlZ2lzdGVyIHdpbGwgZGlzYXBwZWFyLgogCiBzdGF0aWMgRnVuY3Rpb25QdHIgcmVhZENhbGxU
YXJnZXQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgQ29kZUxvY2F0aW9uQ2FsbCBjYWxs
KQogewpAQCAtNDk1LDcgKzQ5MCw2IEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3Qo
RXhlY1N0YXQKICAgICAgICAgCiAgICAgICAgIHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGZMaXN0Lmxp
c3RTaXplKys7CiAgICAgICAgIAotICAgICAgICBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBz
dGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmNhbGxGcmFtZVJlZ2lzdGVyKTsKICAg
ICAgICAgR1BSUmVnIGJhc2VHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNo
LmJhc2VHUFIpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIEdQUlJlZyByZXN1bHRU
YWdHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVlVGFnR1BSKTsK
QEAgLTUxOSw2ICs1MTMsMTAgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVj
U3RhdAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzdWNjZXNzOwogICAgICAgICAKICAg
ICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVHZXR0ZXIoKSB8fCBzbG90LmlzQ2FjaGVhYmxlQ3Vz
dG9tKCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkbid0IGJlIGFz
c3VtaW5nIHRoYXQgdGhlIHRvcCBvZiBzdGFjayBpcyBzZXQgdXAgZm9yIEpTQworICAgICAgICAg
ICAgLy8gSklULXN0eWxlIEMgY2FsbHMsIHNpbmNlIHdlIG1heSBiZSBjdXJyZW50bHkgb24gdG9w
IG9mIGFuIEZUTCBmcmFtZS4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjU3MTEKKyAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHNs
b3QuaXNDYWNoZWFibGVHZXR0ZXIoKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChzY3JhdGNo
R1BSICE9IEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlR1BSICE9
IHNjcmF0Y2hHUFIpOwpAQCAtNTM2LDExICs1MzQsMTEgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRH
ZXRCeUlETGlzdChFeGVjU3RhdAogICAgICAgICAgICAgICAgICAgICBzdHViSml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShz
bG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0Y2hHUFIpOwogI2VuZGlmCiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIHN0dWJKaXQuc2V0dXBBcmd1bWVudHMoY2FsbEZyYW1lUmVn
aXN0ZXIsIGJhc2VHUFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIHN0dWJKaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGJhc2VHUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAg
ICAgICAgIG9wZXJhdGlvbkZ1bmN0aW9uID0gb3BlcmF0aW9uQ2FsbEdldHRlcjsKICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50cygKLSAg
ICAgICAgICAgICAgICAgICAgY2FsbEZyYW1lUmVnaXN0ZXIsIGJhc2VHUFIsCisgICAgICAgICAg
ICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoCisgICAgICAgICAgICAg
ICAgICAgIGJhc2VHUFIsCiAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKEZ1bmN0aW9uUHRyKHNsb3QuY3VzdG9tR2V0dGVyKCkpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpLAogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihpZGVudC5pbXBsKCkpKTsKICAgICAgICAgICAgICAgICBvcGVyYXRpb25GdW5jdGlvbiA9IG9w
ZXJhdGlvbkNhbGxDdXN0b21HZXR0ZXI7CkBAIC03OTMsNyArNzkxLDYgQEAgc3RhdGljIHZvaWQg
ZW1pdFB1dFRyYW5zaXRpb25TdHViKAogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogCi0g
ICAgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5m
by5wYXRjaC5jYWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBzdGF0aWNf
Y2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmJhc2VHUFIpOwogI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCiAgICAgR1BSUmVnIHZhbHVlVGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5m
by5wYXRjaC52YWx1ZVRhZ0dQUik7CkBAIC05NTAsOSArOTQ3LDkgQEAgc3RhdGljIHZvaWQgZW1p
dFB1dFRyYW5zaXRpb25TdHViKAogICAgICAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVy
ID0gdm0tPnNjcmF0Y2hCdWZmZXJGb3JTaXplKGFsbG9jYXRvci5kZXNpcmVkU2NyYXRjaEJ1ZmZl
clNpemUoKSk7CiAgICAgICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVVzZWRSZWdpc3RlcnNUb1NjcmF0
Y2hCdWZmZXIoc3R1YkppdCwgc2NyYXRjaEJ1ZmZlciwgc2NyYXRjaEdQUjEpOwogI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgICAgIHN0dWJKaXQuc2V0dXBBcmd1bWVudHMoY2FsbEZyYW1lUmVnaXN0
ZXIsIGJhc2VHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2xvdC5jYWNoZWRPZmZzZXQoKSksIHZhbHVlR1BS
KTsKKyAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYmFzZUdQUiwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihzbG90LmNhY2hlZE9mZnNldCgpKSwgdmFsdWVHUFIpOwogI2Vsc2UKLSAg
ICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50cyhjYWxsRnJhbWVSZWdpc3RlciwgYmFzZUdQUiwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihzbG90LmNhY2hlZE9mZnNldCgpKSwgdmFsdWVHUFIsIHZhbHVlVGFnR1BS
KTsKKyAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYmFzZUdQUiwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihzbG90LmNhY2hlZE9mZnNldCgpKSwgdmFsdWVHUFIsIHZhbHVlVGFnR1BS
KTsKICNlbmRpZgogICAgICAgICBvcGVyYXRpb25DYWxsID0gc3R1YkppdC5jYWxsKCk7CiAgICAg
ICAgIGFsbG9jYXRvci5yZXN0b3JlVXNlZFJlZ2lzdGVyc0Zyb21TY3JhdGNoQnVmZmVyKHN0dWJK
aXQsIHNjcmF0Y2hCdWZmZXIsIHNjcmF0Y2hHUFIxKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDE2MDQ5OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtOTcs
NiArOTcsOSBAQCB1bmlvbiBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yIHsKICNlbmRpZgogfTsKIAor
I2RlZmluZSBUYWdPZmZzZXQgKE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMudGFnKSkKKyNkZWZpbmUgUGF5bG9hZE9mZnNldCAoT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkKKwogZW51bSBXaGljaFZhbHVl
V29yZCB7CiAgICAgVGFnV29yZCwKICAgICBQYXlsb2FkV29yZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219204</attachid>
            <date>2013-12-13 15:13:55 -0800</date>
            <delta_ts>2013-12-13 21:24:58 -0800</delta_ts>
            <desc>FTL-on-C-stack now knows that 1+1=2</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>44575</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxNjA1NjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuIEFkZHJlc3MoYmFzZSwgb2Zmc2V0ICsgYWRkaXRpb25hbE9mZnNldCk7CiAgICAgICAgIH0K
LQorICAgICAgICAKICAgICAgICAgUmVnaXN0ZXJJRCBiYXNlOwogICAgICAgICBpbnQzMl90IG9m
ZnNldDsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDE2MDU2NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjUsNyArMjI1LDYgQEAgc3RydWN0IFN0cnVjdHVyZVN0dWJJbmZvIHsKIAogICAgIHN0cnVj
dCB7CiAgICAgICAgIGludDhfdCByZWdpc3RlcnNGbHVzaGVkOwotICAgICAgICBpbnQ4X3QgY2Fs
bEZyYW1lUmVnaXN0ZXI7CiAgICAgICAgIGludDhfdCBiYXNlR1BSOwogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCiAgICAgICAgIGludDhfdCB2YWx1ZVRhZ0dQUjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTYw
NTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDggKzIxMyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlVUludDMKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQo
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJn
ZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCiB7CiAgICAgSklUR2V0QnlJZEdlbmVy
YXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCB1c2VkUmVn
aXN0ZXJzKCksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLAotICAgICAgICBKU1ZhbHVlUmVn
cyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3BpbGxNb2RlICE9IE5lZWRUb1Nw
aWxsKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIHVzZWRSZWdpc3Rl
cnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdEdQ
UiksIHNwaWxsTW9kZSAhPSBOZWVkVG9TcGlsbCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
bV9qaXQpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CkBAIC0y
MzUsOSArMjM1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwog
ICAgIHdyaXRlQmFycmllcihiYXNlR1BSLCB2YWx1ZUdQUiwgdmFsdWVVc2UsIFdyaXRlQmFycmll
ckZvclByb3BlcnR5QWNjZXNzLCBzY3JhdGNoR1BSKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0
b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgdXNlZFJlZ2lz
dGVycygpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwKLSAgICAgICAgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgc2NyYXRjaEdQUiwgZmFsc2UsCi0gICAg
ICAgIG1faml0LmVjbWFNb2RlRm9yKGNvZGVPcmlnaW4pLCBwdXRLaW5kKTsKKyAgICAgICAgbV9q
aXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIHVzZWRSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksCisgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgc2NyYXRjaEdQUiwgZmFs
c2UsIG1faml0LmVjbWFNb2RlRm9yKGNvZGVPcmlnaW4pLCBwdXRLaW5kKTsKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNs
b3dDYXNlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0
aW9ucy5oCShyZXZpc2lvbiAxNjA1NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFiYnJldmlhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQCBzdGF0aWMg
aW5saW5lIExUeXBlIGZsb2F0VHlwZShMQ29udGV4dCBjCiBzdGF0aWMgaW5saW5lIExUeXBlIGRv
dWJsZVR5cGUoTENvbnRleHQgY29udGV4dCkgeyByZXR1cm4gbGx2bS0+RG91YmxlVHlwZUluQ29u
dGV4dChjb250ZXh0KTsgfQogCiBzdGF0aWMgaW5saW5lIExUeXBlIHBvaW50ZXJUeXBlKExUeXBl
IHR5cGUpIHsgcmV0dXJuIGxsdm0tPlBvaW50ZXJUeXBlKHR5cGUsIDApOyB9CitzdGF0aWMgaW5s
aW5lIExUeXBlIGFycmF5VHlwZShMVHlwZSB0eXBlLCB1bnNpZ25lZCBjb3VudCkgeyByZXR1cm4g
bGx2bS0+QXJyYXlUeXBlKHR5cGUsIGNvdW50KTsgfQogc3RhdGljIGlubGluZSBMVHlwZSB2ZWN0
b3JUeXBlKExUeXBlIHR5cGUsIHVuc2lnbmVkIGNvdW50KSB7IHJldHVybiBsbHZtLT5WZWN0b3JU
eXBlKHR5cGUsIGNvdW50KTsgfQogCiBlbnVtIFBhY2tpbmdNb2RlIHsgTm90UGFja2VkLCBQYWNr
ZWQgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2
aXNpb24gMTYwNTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDE4ICsyMDIsMTcgQEAgc3RhdGljIHZvaWQgZml4RnVu
Y3Rpb25CYXNlZE9uU3RhY2tNYXBzKAogICAgICAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lz
dGVycyA9IFJlZ2lzdGVyU2V0OjphbGxSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgR1BSUmVnIHJlc3VsdCA9IHJlY29yZC5sb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCk7Ci0g
ICAgICAgICAgICBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSByZWNvcmQubG9jYXRpb25zWzFd
LmRpcmVjdEdQUigpOwotICAgICAgICAgICAgR1BSUmVnIGJhc2UgPSByZWNvcmQubG9jYXRpb25z
WzJdLmRpcmVjdEdQUigpOworICAgICAgICAgICAgR1BSUmVnIGJhc2UgPSByZWNvcmQubG9jYXRp
b25zWzFdLmRpcmVjdEdQUigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yIGdlbigKLSAgICAgICAgICAgICAgICBjb2RlQmxvY2ssIGdldEJ5SWQuY29kZU9y
aWdpbigpLCB1c2VkUmVnaXN0ZXJzLCBjYWxsRnJhbWVSZWdpc3RlciwKLSAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyhiYXNlKSwgSlNWYWx1ZVJlZ3MocmVzdWx0KSwgZmFsc2UpOworICAgICAg
ICAgICAgICAgIGNvZGVCbG9jaywgZ2V0QnlJZC5jb2RlT3JpZ2luKCksIHVzZWRSZWdpc3RlcnMs
IEpTVmFsdWVSZWdzKGJhc2UpLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdCks
IGZhbHNlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVs
IGJlZ2luID0gc2xvd1BhdGhKSVQubGFiZWwoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAg
ICAgc3RhdGUsIHVzZWRSZWdpc3RlcnMsIHNsb3dQYXRoSklULCBvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUsIHJlc3VsdCwKLSAgICAgICAgICAgICAgICBjYWxsRnJhbWVSZWdpc3RlciwgZ2VuLnN0
dWJJbmZvKCksIGJhc2UsIGdldEJ5SWQudWlkKCkpOworICAgICAgICAgICAgICAgIGdlbi5zdHVi
SW5mbygpLCBiYXNlLCBnZXRCeUlkLnVpZCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChiZWdpbiwgY2FsbCk7CiAgICAgICAgICAgICAKQEAgLTIz
OCwyMCArMjM3LDE5IEBAIHN0YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcygK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBMTFZNIHNob3VsZCB0ZWxsIHVzIHdoaWNoIHJlZ2lzdGVy
cyBhcmUgbGl2ZS4KICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBSZWdp
c3RlclNldDo6YWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEdQUlJl
ZyBjYWxsRnJhbWVSZWdpc3RlciA9IHJlY29yZC5sb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCk7Ci0g
ICAgICAgICAgICBHUFJSZWcgYmFzZSA9IHJlY29yZC5sb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCk7
Ci0gICAgICAgICAgICBHUFJSZWcgdmFsdWUgPSByZWNvcmQubG9jYXRpb25zWzJdLmRpcmVjdEdQ
UigpOworICAgICAgICAgICAgR1BSUmVnIGJhc2UgPSByZWNvcmQubG9jYXRpb25zWzBdLmRpcmVj
dEdQUigpOworICAgICAgICAgICAgR1BSUmVnIHZhbHVlID0gcmVjb3JkLmxvY2F0aW9uc1sxXS5k
aXJlY3RHUFIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgSklUUHV0QnlJZEdlbmVyYXRv
ciBnZW4oCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrLCBwdXRCeUlkLmNvZGVPcmlnaW4oKSwg
dXNlZFJlZ2lzdGVycywgY2FsbEZyYW1lUmVnaXN0ZXIsCi0gICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MoYmFzZSksIEpTVmFsdWVSZWdzKHZhbHVlKSwgTWFjcm9Bc3NlbWJsZXI6OnNjcmF0Y2hS
ZWdpc3RlciwKLSAgICAgICAgICAgICAgICBmYWxzZSwgcHV0QnlJZC5lY21hTW9kZSgpLCBwdXRC
eUlkLnB1dEtpbmQoKSk7CisgICAgICAgICAgICAgICAgY29kZUJsb2NrLCBwdXRCeUlkLmNvZGVP
cmlnaW4oKSwgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MoYmFzZSksCisgICAgICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3ModmFsdWUpLCBNYWNyb0Fzc2VtYmxlcjo6c2NyYXRjaFJlZ2lzdGVyLCBm
YWxzZSwgcHV0QnlJZC5lY21hTW9kZSgpLAorICAgICAgICAgICAgICAgIHB1dEJ5SWQucHV0S2lu
ZCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGJl
Z2luID0gc2xvd1BhdGhKSVQubGFiZWwoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAg
c3RhdGUsIHVzZWRSZWdpc3RlcnMsIHNsb3dQYXRoSklULCBnZW4uc2xvd1BhdGhGdW5jdGlvbigp
LCBjYWxsRnJhbWVSZWdpc3RlciwKLSAgICAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKSwgdmFs
dWUsIGJhc2UsIHB1dEJ5SWQudWlkKCkpOworICAgICAgICAgICAgICAgIHN0YXRlLCB1c2VkUmVn
aXN0ZXJzLCBzbG93UGF0aEpJVCwgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgZ2VuLnN0dWJJbmZv
KCksCisgICAgICAgICAgICAgICAgdmFsdWUsIGJhc2UsIHB1dEJ5SWQudWlkKCkpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGJlZ2luLCBjYWxsKTsK
ICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5z
aWNSZXBvc2l0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExJbnRyaW5zaWNSZXBvc2l0b3J5LmgJKHJldmlzaW9uIDE2MDU2NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNy
byhhZGRXaXRoT3ZlcmZsb3czMiwgImxsdm0uc2FkZC53aXRoLm92ZXJmbG93LmkzMiIsIGZ1bmN0
aW9uVHlwZShzdHJ1Y3RUeXBlKG1fY29udGV4dCwgaW50MzIsIGJvb2xlYW4pLCBpbnQzMiwgaW50
MzIpKSBcCiAgICAgbWFjcm8oYWRkV2l0aE92ZXJmbG93NjQsICJsbHZtLnNhZGQud2l0aC5vdmVy
Zmxvdy5pNjQiLCBmdW5jdGlvblR5cGUoc3RydWN0VHlwZShtX2NvbnRleHQsIGludDY0LCBib29s
ZWFuKSwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3JvKGRvdWJsZUFicywgImxsdm0uZmFicy5m
NjQiLCBmdW5jdGlvblR5cGUoZG91YmxlVHlwZSwgZG91YmxlVHlwZSkpIFwKKyAgICBtYWNybyhm
cmFtZUFkZHJlc3MsICJsbHZtLmZyYW1lYWRkcmVzcyIsIGZ1bmN0aW9uVHlwZShwb2ludGVyVHlw
ZShpbnQ4KSwgaW50MzIpKSBcCiAgICAgbWFjcm8obXVsV2l0aE92ZXJmbG93MzIsICJsbHZtLnNt
dWwud2l0aC5vdmVyZmxvdy5pMzIiLCBmdW5jdGlvblR5cGUoc3RydWN0VHlwZShtX2NvbnRleHQs
IGludDMyLCBib29sZWFuKSwgaW50MzIsIGludDMyKSkgXAogICAgIG1hY3JvKG11bFdpdGhPdmVy
ZmxvdzY0LCAibGx2bS5zbXVsLndpdGgub3ZlcmZsb3cuaTY0IiwgZnVuY3Rpb25UeXBlKHN0cnVj
dFR5cGUobV9jb250ZXh0LCBpbnQ2NCwgYm9vbGVhbiksIGludDY0LCBpbnQ2NCkpIFwKICAgICBt
YWNybyhwYXRjaHBvaW50SW50NjQsICJsbHZtLmV4cGVyaW1lbnRhbC5wYXRjaHBvaW50Lmk2NCIs
IGZ1bmN0aW9uVHlwZShpbnQ2NCwgaW50MzIsIGludDMyLCByZWY4LCBpbnQzMiwgVmFyaWFkaWMp
KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAJKHJldmlz
aW9uIDE2MDU2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU0LDIxICs1NCwyNSBAQCB2b2lkIEpJVENvZGU6OmFkZERhdGFT
ZWN0aW9uKFJlZkNvdW50ZWRBCiAgICAgbV9kYXRhU2VjdGlvbnMuYXBwZW5kKGRhdGFTZWN0aW9u
KTsKIH0KIAotdm9pZCBKSVRDb2RlOjppbml0aWFsaXplQ29kZShDb2RlUmVmIGVudHJ5cG9pbnQp
Cit2b2lkIEpJVENvZGU6OmluaXRpYWxpemVFbnRyeXBvaW50KENvZGVSZWYgZW50cnlwb2ludCkK
IHsKICAgICBtX2VudHJ5cG9pbnQgPSBlbnRyeXBvaW50OwogfQogCit2b2lkIEpJVENvZGU6Omlu
aXRpYWxpemVBZGRyZXNzRm9yQ2FsbChDb2RlUHRyIGFkZHJlc3MpCit7CisgICAgbV9hZGRyZXNz
Rm9yQ2FsbCA9IGFkZHJlc3M7Cit9CisKIEpJVENvZGU6OkNvZGVQdHIgSklUQ29kZTo6YWRkcmVz
c0ZvckNhbGwoKQogewotICAgIFJFTEVBU0VfQVNTRVJUKG1fZW50cnlwb2ludCk7Ci0gICAgcmV0
dXJuIG1fZW50cnlwb2ludC5jb2RlKCk7CisgICAgcmV0dXJuIG1fYWRkcmVzc0ZvckNhbGw7CiB9
CiAKIHZvaWQqIEpJVENvZGU6OmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNl
dCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2VudHJ5cG9pbnQpOwotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihtX2VudHJ5cG9pbnQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNz
KCkpICsgb2Zmc2V0OworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihtX2FkZHJl
c3NGb3JDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgb2Zmc2V0OwogfQogCiB2b2lkKiBKSVRD
b2RlOjpkYXRhQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMSklUQ29kZS5oCShyZXZpc2lvbiAxNjA1NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEpJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBpbml0aWFsaXplRXhpdFRodW5rcyhDb2RlUmVmKTsKICAgICB2b2lk
IGFkZEhhbmRsZShQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+KTsKICAgICB2b2lk
IGFkZERhdGFTZWN0aW9uKFJlZkNvdW50ZWRBcnJheTxMU2VjdGlvbldvcmQ+KTsKLSAgICB2b2lk
IGluaXRpYWxpemVDb2RlKENvZGVSZWYgZW50cnlwb2ludCk7CisgICAgdm9pZCBpbml0aWFsaXpl
RW50cnlwb2ludChDb2RlUmVmKTsKKyAgICB2b2lkIGluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChD
b2RlUHRyKTsKICAgICAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlI
YW5kbGU+PiYgaGFuZGxlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlczsgfQogICAgIGNvbnN0
IFZlY3RvcjxSZWZDb3VudGVkQXJyYXk8TFNlY3Rpb25Xb3JkPj4mIGRhdGFTZWN0aW9ucygpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YVNlY3Rpb25zOyB9CkBAIC03Myw2ICs3NCw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZkNvdW50ZWRBcnJheTxMU2VjdGlvbldvcmQ+PiBtX2Rh
dGFTZWN0aW9uczsKICAgICBWZWN0b3I8UmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+PiBt
X2hhbmRsZXM7CisgICAgQ29kZVB0ciBtX2FkZHJlc3NGb3JDYWxsOwogICAgIENvZGVSZWYgbV9l
bnRyeXBvaW50OwogICAgIENvZGVSZWYgbV9leGl0VGh1bmtzOwogfTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJKHJldmlzaW9uIDE2MDU2
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzMsOSArNzMsNyBAQCBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemVG
dW5jdGlvbigpCiAgICAgICAgICAgICBleGl0VGh1bmtzTGlua0J1ZmZlci0+bGluaygKICAgICAg
ICAgICAgICAgICBpbmZvLm1fdGh1bmtKdW1wLAogICAgICAgICAgICAgICAgIENvZGVMb2NhdGlv
bkxhYmVsKAotICAgICAgICAgICAgICAgICAgICBtX3BsYW4udm0uZnRsVGh1bmtzLT5nZXRPU1JF
eGl0R2VuZXJhdGlvblRodW5rKAotICAgICAgICAgICAgICAgICAgICAgICAgbV9wbGFuLnZtLCBM
b2NhdGlvbjo6Zm9yU3RhY2ttYXBzKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZqaXRD
b2RlLT5zdGFja21hcHMsIGl0ZXItPnZhbHVlLmxvY2F0aW9uc1swXSkpLmNvZGUoKSkpOworICAg
ICAgICAgICAgICAgICAgICBtX3BsYW4udm0uZ2V0Q1RJU3R1Yihvc3JFeGl0R2VuZXJhdGlvblRo
dW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaml0
Q29kZS0+aW5pdGlhbGl6ZUV4aXRUaHVua3MoCkBAIC0xMDUsNyArMTAzLDcgQEAgYm9vbCBKSVRG
aW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24oKQogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3
aXRoQXJpdHlDaGVjazsKICAgICBpZiAoYXJpdHlDaGVjay5pc1NldCgpKQogICAgICAgICB3aXRo
QXJpdHlDaGVjayA9IGVudHJ5cG9pbnRMaW5rQnVmZmVyLT5sb2NhdGlvbk9mKGFyaXR5Q2hlY2sp
OwotICAgIGppdENvZGUtPmluaXRpYWxpemVDb2RlKAorICAgIGppdENvZGUtPmluaXRpYWxpemVF
bnRyeXBvaW50KAogICAgICAgICBGSU5BTElaRV9ERkdfQ09ERSgKICAgICAgICAgICAgICplbnRy
eXBvaW50TGlua0J1ZmZlciwKICAgICAgICAgICAgICgiRlRMIGVudHJ5cG9pbnQgdGh1bmsgZm9y
ICVzIHdpdGggTExWTSBnZW5lcmF0ZWQgY29kZSBhdCAlcCIsIHRvQ1N0cmluZyhDb2RlQmxvY2tX
aXRoSklUVHlwZShtX3BsYW4uY29kZUJsb2NrLmdldCgpLCBKSVRDb2RlOjpGVExKSVQpKS5kYXRh
KCksIGZ1bmN0aW9uKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5r
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3Bw
CShyZXZpc2lvbiAxNjA1NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMiArNDMsNiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEZUTCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAKLXN0YXRpYyB2b2lkIGNvbXBp
bGVFbnRyeShDQ2FsbEhlbHBlcnMmIGppdCkKLXsKLSAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9n
dWUoKTsKLSAgICBqaXQuZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKGppdC5jb2Rl
QmxvY2soKSwgSlNTdGFjazo6Q29kZUJsb2NrKTsKLX0KLQogdm9pZCBsaW5rKFN0YXRlJiBzdGF0
ZSkKIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRlLmdyYXBoLm1fY29kZUJsb2Nr
OwpAQCAtNzEsNjQgKzY1LDI1IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgCiAgICAg
T3duUHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXI7CiAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBh
cml0eUNoZWNrOworCisgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZyYW1lID0gQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKAorICAgICAgICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
LCAtc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKHZvaWQqKSkpOworICAgIAogICAgIHN3aXRj
aCAoc3RhdGUuZ3JhcGgubV9wbGFuLm1vZGUpIHsKICAgICBjYXNlIEZUTE1vZGU6IHsKLSAgICAg
ICAgY29tcGlsZUVudHJ5KGppdCk7CisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgbWFp
blBhdGhKdW1wczsKICAgICAKLSAgICAgICAgLy8gVGhpcyBwYXJ0IGlzIG9ubHkgbmVjZXNzYXJ5
IGZvciBmdW5jdGlvbnMuIFdlIGN1cnJlbnRseSBvbmx5IGNvbXBpbGUgZnVuY3Rpb25zLgotICAg
ICAgICAKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBmcm9tQXJpdHlDaGVjayA9IGppdC5s
YWJlbCgpOwotICAgICAgICAKLSAgICAgICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZpY2ll
bnQgc3BhY2UgaXMgYXZhaWxhYmxlIGluIHRoZSBKU1N0YWNrLgotICAgICAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MjkxCi0gICAgICAgIGpp
dC5hZGRQdHIoCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChzdGF0ZS5qaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNv
dW50Rm9yRXhpdCkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwKLSAgICAgICAgICAgIEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgIENDYWxs
SGVscGVyczo6SnVtcCBzdGFja0NoZWNrID0gaml0LmJyYW5jaFB0cigKLSAgICAgICAgICAgIEND
YWxsSGVscGVyczo6QWJvdmUsCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRk
cmVzcyhzdGF0ZS5ncmFwaC5tX3ZtLmFkZHJlc3NPZkpTU3RhY2tMaW1pdCgpKSwKLSAgICAgICAg
ICAgIEdQUkluZm86OnJlZ1QxKTsKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBmcm9tU3Rh
Y2tDaGVjayA9IGppdC5sYWJlbCgpOwotICAgICAgICAKLSAgICAgICAgaml0LnNldHVwQXJndW1l
bnRzRXhlY1N0YXRlKCk7Ci0gICAgICAgIGppdC5tb3ZlKAotICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRl
ZEZ1bmN0aW9uKSksCi0gICAgICAgICAgICBHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAg
aml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25F
cGlsb2d1ZSgpOwotICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIAotICAgICAgICBzdGFja0No
ZWNrLmxpbmsoJmppdCk7Ci0gICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihjb2RlQmxvY2spLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAgICBqaXQubW92
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAg
ICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihDYWxsRnJhbWU6OkxvY2F0aW9uOjplbmNvZGVBc0J5dGVjb2RlT2Zmc2V0KDApKSwKLSAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4o
SlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsKLSAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCAmc3RhdGUuZ3JhcGgubV92bS50b3BDYWxsRnJhbWUpOwotICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbFN0YWNrQ2hlY2sgPSBqaXQuY2FsbCgpOwotI2lm
ICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgLy8gRklYTUU6IG5lZWQgdG8gbWFrZSB0aGlzIGNh
bGwgcmVnaXN0ZXIgd2l0aCBleGNlcHRpb24gaGFuZGxpbmcgc29tZWhvdy4gVGhpcyBpcwotICAg
ICAgICAvLyBwYXJ0IG9mIGEgYmlnZ2VyIHByb2JsZW06IEZUTCBzaG91bGQgYmUgYWJsZSB0byBo
YW5kbGUgZXhjZXB0aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMzYyMgotICAgICAgICAvLyBVbnRpbCB0aGVuLCB1c2UgYSBKSVQgQVNT
RVJULgotICAgICAgICBqaXQubG9hZDY0KHN0YXRlLmdyYXBoLm1fdm0uYWRkcmVzc09mRXhjZXB0
aW9uKCksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgaml0LmppdEFzc2VydElzTnVsbChHUFJJ
bmZvOjpyZWdUMCk7Ci0jZW5kaWYKLSAgICAgICAgaml0Lmp1bXAoZnJvbVN0YWNrQ2hlY2spOwot
ICAgICAgICAKLSAgICAgICAgYXJpdHlDaGVjayA9IGppdC5sYWJlbCgpOwotICAgICAgICBjb21w
aWxlRW50cnkoaml0KTsKICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6cGF5bG9hZEZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KEpTU3RhY2s6OkFy
Z3VtZW50Q291bnQpKSwKKyAgICAgICAgICAgIGZyYW1lLndpdGhPZmZzZXQoc2l6ZW9mKFJlZ2lz
dGVyKSAqIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLAogICAgICAgICAgICAgR1BSSW5mbzo6cmVn
VDEpOwotICAgICAgICBqaXQuYnJhbmNoMzIoCisgICAgICAgIG1haW5QYXRoSnVtcHMuYXBwZW5k
KGppdC5icmFuY2gzMigKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBH
UFJJbmZvOjpyZWdUMSwKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKLSAgICAgICAgICAgIC5saW5rVG8oZnJvbUFyaXR5
Q2hlY2ssICZqaXQpOworICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKSk7CisgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9s
b2d1ZSgpOwogICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihDYWxsRnJhbWU6OkxvY2F0aW9uOjplbmNvZGVBc0J5
dGVjb2RlT2Zmc2V0KDApKSwKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKHN0YXRp
Y19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oSlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsKKyAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKTsKICAg
ICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmc3RhdGUuZ3Jh
cGgubV92bS50b3BDYWxsRnJhbWUpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbEFy
aXR5Q2hlY2sgPSBqaXQuY2FsbCgpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTEzOSwxNiAr
OTQsMjAgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgaml0LmxvYWQ2NChzdGF0
ZS5ncmFwaC5tX3ZtLmFkZHJlc3NPZkV4Y2VwdGlvbigpLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAg
ICAgIGppdC5qaXRBc3NlcnRJc051bGwoR1BSSW5mbzo6cmVnVDEpOwogI2VuZGlmCi0gICAgICAg
IGlmIChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiAhPSBHUFJJbmZvOjpyZWdUMCkKLSAgICAgICAg
ICAgIGppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7Ci0g
ICAgICAgIGppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdU
MCkubGlua1RvKGZyb21Bcml0eUNoZWNrLCAmaml0KTsKKyAgICAgICAgaml0Lm1vdmUoR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgaml0LmVtaXRGdW5j
dGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIG1haW5QYXRoSnVtcHMuYXBwZW5kKGppdC5icmFuY2hU
ZXN0MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMCkpOworICAgICAgICBqaXQu
ZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGxB
cml0eUZpeHVwID0gaml0LmNhbGwoKTsKLSAgICAgICAgaml0Lmp1bXAoZnJvbUFyaXR5Q2hlY2sp
OwotICAgICAgICAKKyAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAg
IG1haW5QYXRoSnVtcHMuYXBwZW5kKGppdC5qdW1wKCkpOworCiAgICAgICAgIGxpbmtCdWZmZXIg
PSBhZG9wdFB0cihuZXcgTGlua0J1ZmZlcihzdGF0ZS5ncmFwaC5tX3ZtLCAmaml0LCBjb2RlQmxv
Y2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKLSAgICAgICAgbGlua0J1ZmZlci0+bGlu
ayhjYWxsU3RhY2tDaGVjaywgb3BlcmF0aW9uU3RhY2tDaGVjayk7CiAgICAgICAgIGxpbmtCdWZm
ZXItPmxpbmsoY2FsbEFyaXR5Q2hlY2ssIGNvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8gb3Bl
cmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKTsKICAg
ICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25QdHIoKHN0YXRl
LmdyYXBoLm1fdm0uZ2V0Q1RJU3R1Yihhcml0eUZpeHVwKSkuY29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpKTsKKyAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXBzLCBDb2RlTG9j
YXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSkp
OworCisgICAgICAgIHN0YXRlLmppdENvZGUtPmluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChNYWNy
b0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0ZWRGdW5j
dGlvbikpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTE1NywxNiArMTE2
LDE1IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIC8vIHZhbHVlcyBpbnRvIHRo
ZSBzY3JhdGNoIGJ1ZmZlci4gRXZlcnl0aGluZyBzaG91bGQgYmUgZ29vZCB0byBnbyAtIGF0IHRo
aXMKICAgICAgICAgLy8gcG9pbnQgd2UndmUgZXZlbiBkb25lIHRoZSBzdGFjayBjaGVjay4gQmFz
aWNhbGx5IHdlIGp1c3QgaGF2ZSB0byBtYWtlIHRoZQogICAgICAgICAvLyBjYWxsIHRvIHRoZSBM
TFZNLWdlbmVyYXRlZCBjb2RlLgotICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUo
KTsKLSAgICAgICAgaml0Lm1vdmUoCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSwK
LSAgICAgICAgICAgIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAgICBqaXQuY2FsbChHUFJJ
bmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzdGFydCA9IGpp
dC5sYWJlbCgpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAg
aml0LnJldCgpOworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbWFpblBhdGhKdW1wID0gaml0
Lmp1bXAoKTsKICAgICAgICAgCiAgICAgICAgIGxpbmtCdWZmZXIgPSBhZG9wdFB0cihuZXcgTGlu
a0J1ZmZlcigKICAgICAgICAgICAgIHN0YXRlLmdyYXBoLm1fdm0sICZqaXQsIGNvZGVCbG9jaywg
SklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkpOworICAgICAgICBsaW5rQnVmZmVyLT5saW5rKG1h
aW5QYXRoSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5n
ZW5lcmF0ZWRGdW5jdGlvbikpKTsKKworICAgICAgICBzdGF0ZS5qaXRDb2RlLT5pbml0aWFsaXpl
QWRkcmVzc0ZvckNhbGwobGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGFydCkpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE2MDU2NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw2ICs1MSwxMCBAQCB1c2luZyBuYW1lc3BhY2UgREZHOwogCiBzdGF0aWMgaW50IGNvbXBp
bGVDb3VudGVyOwogCisvLyBGSVhNRTogR2V0IHJpZCBvZiB0aGlzIGFuZCBpbnRyb2R1Y2UgYSBy
ZWFsIHN0YWNrIGNoZWNrLgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNTY1MAorc3RhdGljIHVpbnRwdHJfdCBzdGFja0xpbWl0OworCiAvLyBVc2luZyB0aGlz
IGluc3RlYWQgb2YgdHlwZUNoZWNrKCkgaGVscHMgdG8gcmVkdWNlIHRoZSBsb2FkIG9uIExMVk0s
IGJ5IGNyZWF0aW5nCiAvLyBzaWduaWZpY2FudGx5IGxlc3MgZGVhZCBjb2RlLgogI2RlZmluZSBG
VExfVFlQRV9DSEVDSyhsb3dWYWx1ZSwgaGlnaFZhbHVlLCB0eXBlc1Bhc3NlZFRocm91Z2gsIGZh
aWxDb25kaXRpb24pIGRvIHsgXApAQCAtOTIsMTYgKzk2LDI5IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIGxsdm0tPk1vZHVsZUNyZWF0ZVdpdGhOYW1lSW5Db250ZXh0KG5hbWUuZGF0YSgpLCBtX2Z0
bFN0YXRlLmNvbnRleHQpOwogICAgICAgICAKICAgICAgICAgbV9mdGxTdGF0ZS5mdW5jdGlvbiA9
IGFkZEZ1bmN0aW9uKAotICAgICAgICAgICAgbV9mdGxTdGF0ZS5tb2R1bGUsIG5hbWUuZGF0YSgp
LCBmdW5jdGlvblR5cGUobV9vdXQuaW50NjQsIG1fb3V0LmludFB0cikpOworICAgICAgICAgICAg
bV9mdGxTdGF0ZS5tb2R1bGUsIG5hbWUuZGF0YSgpLCBmdW5jdGlvblR5cGUobV9vdXQuaW50NjQp
KTsKICAgICAgICAgc2V0RnVuY3Rpb25DYWxsaW5nQ29udihtX2Z0bFN0YXRlLmZ1bmN0aW9uLCBM
TFZNQ0NhbGxDb252KTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmluaXRpYWxpemUobV9mdGxT
dGF0ZS5tb2R1bGUsIG1fZnRsU3RhdGUuZnVuY3Rpb24sIG1faGVhcHMpOwogICAgICAgICAKLSAg
ICAgICAgbV9wcm9sb2d1ZSA9IGFwcGVuZEJhc2ljQmxvY2sobV9mdGxTdGF0ZS5jb250ZXh0LCBt
X2Z0bFN0YXRlLmZ1bmN0aW9uKTsKLSAgICAgICAgbV9vdXQuYXBwZW5kVG8obV9wcm9sb2d1ZSk7
CisgICAgICAgIG1fcHJvbG9ndWUgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlByb2xvZ3VlIikp
OworICAgICAgICBMQmFzaWNCbG9jayBzdGFja092ZXJmbG93ID0gRlRMX05FV19CTE9DSyhtX291
dCwgKCJTdGFjayBvdmVyZmxvdyIpKTsKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obV9wcm9sb2d1
ZSwgc3RhY2tPdmVyZmxvdyk7CiAgICAgICAgIGNyZWF0ZVBoaVZhcmlhYmxlcygpOworICAgICAg
ICBtX2NhcHR1cmVkID0gbV9vdXQucHRyVG9JbnQoCisgICAgICAgICAgICBtX291dC5hbGxvY2Eo
YXJyYXlUeXBlKG1fb3V0LmludDY0LCBtX2dyYXBoLm1fbmV4dE1hY2hpbmVMb2NhbCkpLAorICAg
ICAgICAgICAgbV9vdXQuaW50UHRyKTsKKyAgICAgICAgCisgICAgICAgIC8vIFdlIHNob3VsZCBu
b3QgY3JlYXRlIGFueSBhbGxvY2EncyBhZnRlciB0aGlzIHBvaW50LCBzaW5jZSB0aGV5IHdpbGwg
Y2Vhc2UgdG8KKyAgICAgICAgLy8gYmUgbWVtMnJlZyBjYW5kaWRhdGVzLgorICAgICAgICAKKyAg
ICAgICAgbV9mdGxTdGF0ZS5jYXB0dXJlZFN0YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7Cisg
ICAgICAgIG1fb3V0LmNhbGwoCisgICAgICAgICAgICBtX291dC5zdGFja21hcEludHJpbnNpYygp
LCBtX291dC5jb25zdEludDMyKG1fZnRsU3RhdGUuY2FwdHVyZWRTdGFja21hcElEKSwKKyAgICAg
ICAgICAgIG1fb3V0LmludDMyWmVybyk7CiAgICAgICAgIAotICAgICAgICBtX2NhbGxGcmFtZSA9
IG1fb3V0LnBhcmFtKDApOworICAgICAgICBtX2NhbGxGcmFtZSA9IG1fb3V0LnB0clRvSW50KAor
ICAgICAgICAgICAgbV9vdXQuY2FsbChtX291dC5mcmFtZUFkZHJlc3NJbnRyaW5zaWMoKSwgbV9v
dXQuaW50MzJaZXJvKSwgbV9vdXQuaW50UHRyKTsKICAgICAgICAgbV90YWdUeXBlTnVtYmVyID0g
bV9vdXQuY29uc3RJbnQ2NChUYWdUeXBlTnVtYmVyKTsKICAgICAgICAgbV90YWdNYXNrID0gbV9v
dXQuY29uc3RJbnQ2NChUYWdNYXNrKTsKICAgICAgICAgCkBAIC0xMTIsOCArMTI5LDE0IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIG1fYmxvY2tzLmFkZChtX2hpZ2hCbG9jaywgRlRMX05FV19CTE9D
SyhtX291dCwgKCJCbG9jayAiLCAqbV9oaWdoQmxvY2spKSk7CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIG1fb3V0LmFwcGVuZFRvKG1fcHJvbG9ndWUpOwotICAgICAgICBtX291dC5qdW1w
KGxvd0Jsb2NrKG1fZ3JhcGguYmxvY2soMCkpKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9v
dXQuY29uc3RJbnRQdHIoY29kZUJsb2NrKCkpLCBhZGRyZXNzRm9yKEpTU3RhY2s6OkNvZGVCbG9j
aykpOworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBtX291dC5iZWxvdyhtX2Nh
bGxGcmFtZSwgbV9vdXQubG9hZFB0cihtX291dC5hYnNvbHV0ZSgmc3RhY2tMaW1pdCkpKSwKKyAg
ICAgICAgICAgIHN0YWNrT3ZlcmZsb3csIGxvd0Jsb2NrKG1fZ3JhcGguYmxvY2soMCkpKTsKKyAg
ICAgICAgCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHN0YWNrT3ZlcmZsb3csIGxvd0Jsb2NrKG1f
Z3JhcGguYmxvY2soMCkpKTsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBleGNlcHRpb25zLiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjIyCisgICAgICAgIG1f
b3V0LmNyYXNoKCk7CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IGRlcHRo
Rmlyc3Q7CiAgICAgICAgIG1fZ3JhcGguZ2V0QmxvY2tzSW5EZXB0aEZpcnN0T3JkZXIoZGVwdGhG
aXJzdCk7CkBAIC0xMjcwLDcgKzEyOTMsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgY2Fs
bCA9IG1fb3V0LmNhbGwoCiAgICAgICAgICAgICBtX291dC5wYXRjaHBvaW50SW50NjRJbnRyaW5z
aWMoKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoc3RhY2ttYXBJRCksIG1fb3V0LmNv
bnN0SW50MzIoc2l6ZU9mR2V0QnlJZCgpKSwKLSAgICAgICAgICAgIGNvbnN0TnVsbChtX291dC5y
ZWY4KSwgbV9vdXQuY29uc3RJbnQzMigyKSwgbV9jYWxsRnJhbWUsIGJhc2UpOworICAgICAgICAg
ICAgY29uc3ROdWxsKG1fb3V0LnJlZjgpLCBtX291dC5jb25zdEludDMyKDEpLCBiYXNlKTsKICAg
ICAgICAgc2V0SW5zdHJ1Y3Rpb25DYWxsaW5nQ29udmVudGlvbihjYWxsLCBMTFZNQW55UmVnQ2Fs
bENvbnYpOwogICAgICAgICBzZXRKU1ZhbHVlKGNhbGwpOwogICAgICAgICAKQEAgLTEyOTUsNyAr
MTMxOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBjYWxsID0gbV9vdXQuY2FsbCgKICAg
ICAgICAgICAgIG1fb3V0LnBhdGNocG9pbnRWb2lkSW50cmluc2ljKCksCiAgICAgICAgICAgICBt
X291dC5jb25zdEludDMyKHN0YWNrbWFwSUQpLCBtX291dC5jb25zdEludDMyKHNpemVPZlB1dEJ5
SWQoKSksCi0gICAgICAgICAgICBjb25zdE51bGwobV9vdXQucmVmOCksIG1fb3V0LmNvbnN0SW50
MzIoMyksIG1fY2FsbEZyYW1lLCBiYXNlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb25zdE51bGwo
bV9vdXQucmVmOCksIG1fb3V0LmNvbnN0SW50MzIoMiksIGJhc2UsIHZhbHVlKTsKICAgICAgICAg
c2V0SW5zdHJ1Y3Rpb25DYWxsaW5nQ29udmVudGlvbihjYWxsLCBMTFZNQW55UmVnQ2FsbENvbnYp
OwogICAgICAgICAKICAgICAgICAgbV9mdGxTdGF0ZS5wdXRCeUlkcy5hcHBlbmQoUHV0QnlJZERl
c2NyaXB0b3IoCkBAIC00MDAzLDcgKzQwMjYsNiBAQCBwcml2YXRlOgogICAgICAgICBPU1JFeGl0
JiBleGl0LCBFeGl0QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIEZvcm1hdHRlZFZhbHVlIGxvd1Zh
bHVlLAogICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiAgICAgewotICAgICAgICBhcmd1
bWVudHMuYXBwZW5kKG1fY2FsbEZyYW1lKTsKICAgICAgICAgaWYgKCEhbG93VmFsdWUpCiAgICAg
ICAgICAgICBhcmd1bWVudHMuYXBwZW5kKGxvd1ZhbHVlLnZhbHVlKCkpOwogICAgICAgICAKQEAg
LTQyNjAsMzUgKzQyODIsNDIgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgVHlwZWRQb2ludGVyIHBh
eWxvYWRGb3IoTFZhbHVlIGJhc2UsIGludCBvcGVyYW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkZHJlc3NGb3IoYmFzZSwgb3BlcmFuZCwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7CisgICAgICAgIHJldHVybiBhZGRyZXNzRm9yKGJh
c2UsIG9wZXJhbmQsIFBheWxvYWRPZmZzZXQpOwogICAgIH0KICAgICBUeXBlZFBvaW50ZXIgdGFn
Rm9yKExWYWx1ZSBiYXNlLCBpbnQgb3BlcmFuZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZGRy
ZXNzRm9yKGJhc2UsIG9wZXJhbmQsIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMudGFnKSk7CisgICAgICAgIHJldHVybiBhZGRyZXNzRm9yKGJhc2UsIG9wZXJh
bmQsIFRhZ09mZnNldCk7CiAgICAgfQotICAgIFR5cGVkUG9pbnRlciBhZGRyZXNzRm9yKGludCBv
cGVyYW5kKQorICAgIFR5cGVkUG9pbnRlciBhZGRyZXNzRm9yKGludCBvcGVyYW5kLCBwdHJkaWZm
X3Qgb2Zmc2V0ID0gMCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZGRyZXNzRm9yKG1fY2FsbEZy
YW1lLCBvcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuIGFkZHJlc3NGb3IoVmlydHVhbFJlZ2lzdGVy
KG9wZXJhbmQpLCBvZmZzZXQpOwogICAgIH0KLSAgICBUeXBlZFBvaW50ZXIgYWRkcmVzc0ZvcihW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKKyAgICBUeXBlZFBvaW50ZXIgYWRkcmVzc0ZvcihWaXJ0
dWFsUmVnaXN0ZXIgb3BlcmFuZCwgcHRyZGlmZl90IG9mZnNldCA9IDApCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRkcmVzc0ZvcihtX2NhbGxGcmFtZSwgb3BlcmFuZC5vZmZzZXQoKSk7CisgICAg
ICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkgeworICAgICAgICAgICAgcmV0dXJuIFR5cGVkUG9p
bnRlcigKKyAgICAgICAgICAgICAgICBtX2hlYXBzLnZhcmlhYmxlc1tvcGVyYW5kLm9mZnNldCgp
XSwKKyAgICAgICAgICAgICAgICBtX291dC5hZGQoCisgICAgICAgICAgICAgICAgICAgIG1fY2Fw
dHVyZWQsCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKG9wZXJhbmQudG9M
b2NhbCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
YWRkcmVzc0ZvcihtX2NhbGxGcmFtZSwgb3BlcmFuZC5vZmZzZXQoKSwgb2Zmc2V0KTsKICAgICB9
CiAgICAgVHlwZWRQb2ludGVyIHBheWxvYWRGb3IoaW50IG9wZXJhbmQpCiAgICAgewotICAgICAg
ICByZXR1cm4gcGF5bG9hZEZvcihtX2NhbGxGcmFtZSwgb3BlcmFuZCk7CisgICAgICAgIHJldHVy
biBwYXlsb2FkRm9yKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKSk7CiAgICAgfQogICAgIFR5cGVk
UG9pbnRlciBwYXlsb2FkRm9yKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHBheWxvYWRGb3IobV9jYWxsRnJhbWUsIG9wZXJhbmQub2Zmc2V0KCkpOworICAg
ICAgICByZXR1cm4gYWRkcmVzc0ZvcihvcGVyYW5kLCBQYXlsb2FkT2Zmc2V0KTsKICAgICB9CiAg
ICAgVHlwZWRQb2ludGVyIHRhZ0ZvcihpbnQgb3BlcmFuZCkKICAgICB7Ci0gICAgICAgIHJldHVy
biB0YWdGb3IobV9jYWxsRnJhbWUsIG9wZXJhbmQpOworICAgICAgICByZXR1cm4gdGFnRm9yKFZp
cnR1YWxSZWdpc3RlcihvcGVyYW5kKSk7CiAgICAgfQogICAgIFR5cGVkUG9pbnRlciB0YWdGb3Io
VmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCiAgICAgewotICAgICAgICByZXR1cm4gdGFnRm9yKG1f
Y2FsbEZyYW1lLCBvcGVyYW5kLm9mZnNldCgpKTsKKyAgICAgICAgcmV0dXJuIGFkZHJlc3NGb3Io
b3BlcmFuZCwgVGFnT2Zmc2V0KTsKICAgICB9CiAgICAgCiAgICAgVk0mIHZtKCkgeyByZXR1cm4g
bV9ncmFwaC5tX3ZtOyB9CkBAIC00MzAzLDYgKzQzMzIsNyBAQCBwcml2YXRlOgogICAgIEhhc2hN
YXA8QmFzaWNCbG9jayosIExCYXNpY0Jsb2NrPiBtX2Jsb2NrczsKICAgICAKICAgICBMVmFsdWUg
bV9jYWxsRnJhbWU7CisgICAgTFZhbHVlIG1fY2FwdHVyZWQ7CiAgICAgTFZhbHVlIG1fdGFnVHlw
ZU51bWJlcjsKICAgICBMVmFsdWUgbV90YWdNYXNrOwogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTYw
NTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OSwxMyArNzksMTIgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0
dWIoCiAgICAgCiAgICAgLy8gR2V0IHRoZSBjYWxsIGZyYW1lIGFuZCB0YWcgdGhpbmdpZXMuCiAg
ICAgLy8gUmVzdG9yZSB0aGUgZXhpdGluZyBmdW5jdGlvbidzIGNhbGxGcmFtZSB2YWx1ZSBpbnRv
IGEgcmVnVDQKLSAgICByZWNvcmQtPmxvY2F0aW9uc1swXS5yZXN0b3JlSW50byhqaXQsIGppdENv
ZGUtPnN0YWNrbWFwcywgcmVnaXN0ZXJTY3JhdGNoLCBHUFJJbmZvOjpyZWdUNCk7CiAgICAgaml0
Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVyKSwgR1BSSW5m
bzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTY0KFRhZ01hc2spLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgIAog
ICAgIC8vIERvIHNvbWUgdmFsdWUgcHJvZmlsaW5nLgogICAgIGlmIChleGl0Lm1fcHJvZmlsZVZh
bHVlRm9ybWF0ICE9IEludmFsaWRWYWx1ZUZvcm1hdCkgewotICAgICAgICByZWNvcmQtPmxvY2F0
aW9uc1sxXS5yZXN0b3JlSW50byhqaXQsIGppdENvZGUtPnN0YWNrbWFwcywgcmVnaXN0ZXJTY3Jh
dGNoLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIHJlY29yZC0+bG9jYXRpb25zWzBdLnJlc3Rv
cmVJbnRvKGppdCwgaml0Q29kZS0+c3RhY2ttYXBzLCByZWdpc3RlclNjcmF0Y2gsIEdQUkluZm86
OnJlZ1QwKTsKICAgICAgICAgcmVib3hBY2NvcmRpbmdUb0Zvcm1hdCgKICAgICAgICAgICAgIGV4
aXQubV9wcm9maWxlVmFsdWVGb3JtYXQsIGppdCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJl
Z1QxLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAgIApAQCAtMTI5LDcgKzEyOCw3IEBAIHN0YXRp
YyB2b2lkIGNvbXBpbGVTdHViKAogICAgICAgICBjYXNlIEV4aXRWYWx1ZUluSlNTdGFja0FzSW50
MzI6CiAgICAgICAgIGNhc2UgRXhpdFZhbHVlSW5KU1N0YWNrQXNJbnQ1MjoKICAgICAgICAgY2Fz
ZSBFeGl0VmFsdWVJbkpTU3RhY2tBc0RvdWJsZToKLSAgICAgICAgICAgIGppdC5sb2FkNjQoQXNz
ZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHZhbHVlLnZpcnR1YWxSZWdpc3RlcigpLCBHUFJJbmZv
OjpyZWdUNCksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1i
bHlIZWxwZXJzOjphZGRyZXNzRm9yKHZhbHVlLnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5mbzo6
cmVnVDApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVs
dDoKQEAgLTE0OSwxOSArMTQ4LDkgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAgICAg
IGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIHJl
Ym94QWNjb3JkaW5nVG9Gb3JtYXQoCiAgICAgICAgICAgICB2YWx1ZS52YWx1ZUZvcm1hdCgpLCBq
aXQsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOwotICAg
ICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNz
Rm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCksIEdQUkluZm86OnJlZ1Q0
KSk7CisgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6
OmFkZHJlc3NGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKSkpOwogICAg
IH0KICAgICAKLSAgICAvLyBSZXN0b3JlIHRoZSBvbGQgc3RhY2sgcG9pbnRlciBhbmQgdGhlbiBw
dXQgcmVnVDQgaW50byBjYWxsRnJhbWVSZWdpc3Rlci4gVGhlIGlkZWEgaXMKLSAgICAvLyB0aGF0
IHRoZSBGVEwgY2FsbCBmcmFtZSBpcyBwdXNoZWQgb250byB0aGUgSlMgY2FsbCBmcmFtZSBhbmQg
d2UgY2FuIHJlY292ZXIgdGhlIG9sZAotICAgIC8vIHZhbHVlIG9mIHRoZSBzdGFjayBwb2ludGVy
IGJ5IHBvcHBpbmcgdGhlIEZUTCBjYWxsIGZyYW1lLiBXZSBhbHJlYWR5IGtub3cgd2hhdCB0aGUK
LSAgICAvLyBmcmFtZSBwb2ludGVyIGluIHRoZSBKUyBjYWxsIGZyYW1lIHdhcyBiZWNhdXNlIGl0
IHdvdWxkIGhhdmUgYmVlbiBwYXNzZWQgYXMgYW4gYXJndW1lbnQKLSAgICAvLyB0byB0aGUgRlRM
IGNhbGwgZnJhbWUuCi0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJl
Z2lzdGVyLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIGppdC5w
b3AoR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgaml0LnBvcChHUFJJbmZvOjpub25BcmdHUFIw
KTsKLSAgICBqaXQubW92ZShHUFJJbmZvOjpyZWdUNCwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIpOwotICAgIAogICAgIGhhbmRsZUV4aXRDb3VudHMoaml0LCBleGl0KTsKICAgICByZWlmeUlu
bGluZWRDYWxsRnJhbWVzKGppdCwgZXhpdCk7CiAgICAgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KGpp
dCwgZXhpdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHJldmlz
aW9uIDE2MDU2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIGNhc3RU
b0ludDMyKExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gaW50Q2FzdCh2YWx1ZSwgaW50MzIpOyB9CiAg
ICAgTFZhbHVlIGZwQ2FzdChMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpIHsgcmV0dXJuIGJ1aWxk
RlBDYXN0KG1fYnVpbGRlciwgdmFsdWUsIHR5cGUpOyB9CiAgICAgTFZhbHVlIGludFRvUHRyKExW
YWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkgeyByZXR1cm4gYnVpbGRJbnRUb1B0cihtX2J1aWxkZXIs
IHZhbHVlLCB0eXBlKTsgfQorICAgIExWYWx1ZSBwdHJUb0ludChMVmFsdWUgdmFsdWUsIExUeXBl
IHR5cGUpIHsgcmV0dXJuIGJ1aWxkUHRyVG9JbnQobV9idWlsZGVyLCB2YWx1ZSwgdHlwZSk7IH0K
ICAgICBMVmFsdWUgYml0Q2FzdChMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpIHsgcmV0dXJuIGJ1
aWxkQml0Q2FzdChtX2J1aWxkZXIsIHZhbHVlLCB0eXBlKTsgfQogICAgIAogICAgIExWYWx1ZSBh
bGxvY2EoTFR5cGUgdHlwZSkgeyByZXR1cm4gYnVpbGRBbGxvY2EobV9idWlsZGVyLCB0eXBlKTsg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNw
cAkocmV2aXNpb24gMTYwNTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93
UGF0aENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsMTMgKzE1OCwxMyBAQCBwcml2YXRl
OgogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oCi0gICAgU3RhdGUmIHN0YXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIAotICAgIEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciwKLSAgICBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBvYmplY3QsIFN0cmluZ0ltcGwqIHVpZCkK
KyAgICBTdGF0ZSYgc3RhdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2Fs
bEhlbHBlcnMmIGppdCwKKyAgICBKX0pJVE9wZXJhdGlvbl9FU3NpSkkgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBvYmplY3QsCisg
ICAgU3RyaW5nSW1wbCogdWlkKQogewogICAgIENhbGxDb250ZXh0IGNvbnRleHQoc3RhdGUsIHVz
ZWRSZWdpc3RlcnMsIGppdCwgNCwgcmVzdWx0KTsKLSAgICBqaXQuc2V0dXBBcmd1bWVudHMoCi0g
ICAgICAgIGNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3R1
YkluZm8pLCBvYmplY3QsCisgICAgaml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZSgKKyAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgb2JqZWN0LAogICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodWlkKSk7CiAgICAgcmV0dXJuIGNvbnRl
eHQubWFrZUNhbGwoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb24pKTsKICAgICAvLyBGSVhN
RTogRlRMIHNob3VsZCBzdXBwb3J0IGV4Y2VwdGlvbnMuCkBAIC0xNzMsMTIgKzE3MywxMiBAQCBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKAogCiBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKAogICAgIFN0YXRlJiBzdGF0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCAKLSAgICBWX0pJVE9wZXJhdGlvbl9FU3Np
SkpJIG9wZXJhdGlvbiwgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyLAotICAgIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIHZhbHVlLCBHUFJSZWcgb2JqZWN0LCBTdHJpbmdJbXBs
KiB1aWQpCisgICAgVl9KSVRPcGVyYXRpb25fRVNzaUpKSSBvcGVyYXRpb24sIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIHZhbHVlLCBHUFJSZWcgb2JqZWN0LAorICAgIFN0cmlu
Z0ltcGwqIHVpZCkKIHsKICAgICBDYWxsQ29udGV4dCBjb250ZXh0KHN0YXRlLCB1c2VkUmVnaXN0
ZXJzLCBqaXQsIDUsIEludmFsaWRHUFJSZWcpOwotICAgIGppdC5zZXR1cEFyZ3VtZW50cygKLSAg
ICAgICAgY2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHVi
SW5mbyksIHZhbHVlLCBvYmplY3QsCisgICAgaml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZSgKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgdmFsdWUs
IG9iamVjdCwKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHVpZCkpOwogICAg
IHJldHVybiBjb250ZXh0Lm1ha2VDYWxsKGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uKSk7
CiAgICAgLy8gRklYTUU6IEZUTCBzaG91bGQgc3VwcG9ydCBleGNlcHRpb25zLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCShyZXZpc2lvbiAxNjA1
NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NywxMiArNTcsMTAgQEAgcHJpdmF0ZToKIAogTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbigKICAgICBTdGF0ZSYsIGNvbnN0IFJlZ2lzdGVyU2V0JiwgQ0Nh
bGxIZWxwZXJzJiwgSl9KSVRPcGVyYXRpb25fRVNzaUpJLAotICAgIEdQUlJlZyByZXN1bHQsIEdQ
UlJlZyBjYWxsRnJhbWVSZWdpc3RlciwgU3RydWN0dXJlU3R1YkluZm8qLCBHUFJSZWcgb2JqZWN0
LAotICAgIFN0cmluZ0ltcGwqIHVpZCk7CisgICAgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlU3R1
YkluZm8qLCBHUFJSZWcgb2JqZWN0LCBTdHJpbmdJbXBsKiB1aWQpOwogTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbigKICAgICBTdGF0ZSYsIGNvbnN0IFJlZ2lzdGVyU2V0JiwgQ0Nh
bGxIZWxwZXJzJiwgVl9KSVRPcGVyYXRpb25fRVNzaUpKSSwKLSAgICBHUFJSZWcgY2FsbEZyYW1l
UmVnaXN0ZXIsIFN0cnVjdHVyZVN0dWJJbmZvKiwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgb2JqZWN0
LAotICAgIFN0cmluZ0ltcGwqIHVpZCk7CisgICAgU3RydWN0dXJlU3R1YkluZm8qLCBHUFJSZWcg
dmFsdWUsIEdQUlJlZyBvYmplY3QsIFN0cmluZ0ltcGwqIHVpZCk7CiAKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpGVEwKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaAkocmV2
aXNpb24gMTYwNTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8SklUQ29k
ZT4gaml0Q29kZTsKICAgICBHZW5lcmF0ZWRGdW5jdGlvbiBnZW5lcmF0ZWRGdW5jdGlvbjsKICAg
ICBKSVRGaW5hbGl6ZXIqIGZpbmFsaXplcjsKKyAgICB1bnNpZ25lZCBjYXB0dXJlZFN0YWNrbWFw
SUQ7CiAgICAgU2VnbWVudGVkVmVjdG9yPEdldEJ5SWREZXNjcmlwdG9yPiBnZXRCeUlkczsKICAg
ICBTZWdtZW50ZWRWZWN0b3I8UHV0QnlJZERlc2NyaXB0b3I+IHB1dEJ5SWRzOwogICAgIFZlY3Rv
cjxDU3RyaW5nPiBjb2RlU2VjdGlvbk5hbWVzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMVGh1bmtzLmNwcAkocmV2aXNpb24gMTYwNTY2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSw5IEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogdXNpbmcgbmFtZXNwYWNlIERGRzsKIAot
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0m
IHZtLCBjb25zdCBMb2NhdGlvbiYgbG9jYXRpb24pCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3Ny
RXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcihWTSogdm0pCiB7Ci0gICAgQXNzZW1ibHlIZWxw
ZXJzIGppdCgmdm0sIDApOworICAgIEFzc2VtYmx5SGVscGVycyBqaXQodm0sIDApOwogICAgIAog
ICAgIC8vIE5vdGUgdGhhdCB0aGUgInJldHVybiBhZGRyZXNzIiB3aWxsIGJlIHRoZSBPU1IgZXhp
dCBJRC4KICAgICAKQEAgLTUxLDcgKzUxLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4
aXRHZW5lcmF0aW9uVAogICAgIGppdC5wdXNoKEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQucHVz
aChHUFJJbmZvOjpyZWdUMCk7CiAgICAgCi0gICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZl
ciA9IHZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5
dGVzKCkpOworICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZmZXIgPSB2bS0+c2NyYXRjaEJ1
ZmZlckZvclNpemUocmVxdWlyZWRTY3JhdGNoTWVtb3J5U2l6ZUluQnl0ZXMoKSk7CiAgICAgY2hh
ciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIo
KSk7CiAgICAgCiAgICAgc2F2ZUFsbFJlZ2lzdGVycyhqaXQsIGJ1ZmZlcik7CkBAIC02MCw3ICs2
MCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblQKICAgICBqaXQu
bW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hY3RpdmVM
ZW5ndGhQdHIoKSksIEdQUkluZm86Om5vbkFyZ0dQUjEpOwogICAgIGppdC5zdG9yZVB0cihNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRl
cygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAKLSAgICBsb2NhdGlvbi5yZXN0b3JlSW50byhq
aXQsIGJ1ZmZlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCAxKTsKKyAgICBqaXQubG9hZFB0cihH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBq
aXQucGVlayhHUFJJbmZvOjphcmd1bWVudEdQUjEsIDMpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGZ1bmN0aW9uQ2FsbCA9IGppdC5jYWxsKCk7CiAgICAgCkBAIC04OCw5ICs4OCw5IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblQKIAogICAgIGppdC5yZXQoKTsK
ICAgICAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKHZtLCAmaml0LCBHTE9CQUxfVEhVTktf
SUQpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmaml0LCBHTE9CQUxfVEhVTktf
SUQpOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZnVuY3Rpb25DYWxsLCBjb21waWxlRlRMT1NSRXhp
dCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiRlRMIE9TUiBleGl0
IGdlbmVyYXRpb24gdGh1bmsgZm9yIGNhbGxGcmFtZSBhdCAlcyIsIHRvQ1N0cmluZyhsb2NhdGlv
bikuZGF0YSgpKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiRlRM
IE9TUiBleGl0IGdlbmVyYXRpb24gdGh1bmsiKSk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBzbG93UGF0aENhbGxUaHVua0dlbmVyYXRvcihWTSYgdm0sIGNvbnN0IFNsb3dQYXRoQ2FsbEtl
eSYga2V5KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5oCShyZXZpc2lv
biAxNjA1NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFZNOwogCiBuYW1lc3BhY2UgRlRMIHsK
IAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3Io
Vk0mLCBjb25zdCBMb2NhdGlvbiYpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4aXRHZW5l
cmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzbG93UGF0
aENhbGxUaHVua0dlbmVyYXRvcihWTSYsIGNvbnN0IFNsb3dQYXRoQ2FsbEtleSYpOwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXlUeXBlQXJndW1lbnQ+CkBAIC03OCwxMiArNzgsNiBAQCB0eXBlbmFt
ZSBNYXBUeXBlOjpLZXlUeXBlIGtleUZvclRodW5rKE1hCiAKIGNsYXNzIFRodW5rcyB7CiBwdWJs
aWM6Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdldE9TUkV4aXRHZW5lcmF0aW9uVGh1bmso
Vk0mIHZtLCBjb25zdCBMb2NhdGlvbiYgbG9jYXRpb24pCi0gICAgewotICAgICAgICByZXR1cm4g
Z2VuZXJhdGVJZk5lY2Vzc2FyeSgKLSAgICAgICAgICAgIHZtLCBtX29zckV4aXRUaHVua3MsIGxv
Y2F0aW9uLCBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKTsKLSAgICB9Ci0gICAgCiAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdldFNsb3dQYXRoQ2FsbFRodW5rKFZNJiB2bSwgY29u
c3QgU2xvd1BhdGhDYWxsS2V5JiBrZXkpCiAgICAgewogICAgICAgICByZXR1cm4gZ2VuZXJhdGVJ
Zk5lY2Vzc2FyeSgKQEAgLTk2LDcgKzkwLDYgQEAgcHVibGljOgogICAgIH0KICAgICAKIHByaXZh
dGU6Ci0gICAgVGh1bmtNYXA8TG9jYXRpb24+IG1fb3NyRXhpdFRodW5rczsKICAgICBUaHVua01h
cDxTbG93UGF0aENhbGxLZXk+IG1fc2xvd1BhdGhDYWxsVGh1bmtzOwogfTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNjA1
NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBBZGRyZXNz
IHRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQogICAgIHsKICAgICAgICAg
QVNTRVJUKHZpcnR1YWxSZWdpc3Rlci5pc1ZhbGlkKCkpOwotICAgICAgICByZXR1cm4gQWRkcmVz
cyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgdmlydHVhbFJlZ2lzdGVyLm9mZnNldCgpICog
c2l6ZW9mKFJlZ2lzdGVyKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LCBhc0JpdHMudGFnKSk7CisgICAgICAgIHJldHVybiBBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCB2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpICsg
VGFnT2Zmc2V0KTsKICAgICB9CiAgICAgc3RhdGljIEFkZHJlc3MgdGFnRm9yKGludCBvcGVyYW5k
KQogICAgIHsKQEAgLTIyNiw3ICsyMjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEFkZHJlc3Mg
cGF5bG9hZEZvcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKHZpcnR1YWxSZWdpc3Rlci5pc1ZhbGlkKCkpOwotICAgICAgICByZXR1cm4gQWRk
cmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgdmlydHVhbFJlZ2lzdGVyLm9mZnNldCgp
ICogc2l6ZW9mKFJlZ2lzdGVyKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMucGF5bG9hZCkpOworICAgICAgICByZXR1cm4gQWRkcmVzcyhHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgdmlydHVhbFJlZ2lzdGVyLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lz
dGVyKSArIFBheWxvYWRPZmZzZXQpOwogICAgIH0KICAgICBzdGF0aWMgQWRkcmVzcyBwYXlsb2Fk
Rm9yKGludCBvcGVyYW5kKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxNjA1NjYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
cjo6SklUSW5saW5lQ2FjaGVHCiAKIEpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3Io
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVy
LCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgYm9vbCByZWdpc3RlcnNGbHVz
aGVkKQorICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBib29sIHJlZ2lz
dGVyc0ZsdXNoZWQpCiAgICAgOiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihjb2RlQmxvY2ssIGNv
ZGVPcmlnaW4pCiAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAsIG1fdmFsdWUodmFsdWUpCkBAIC02
Miw3ICs2Miw2IEBAIEpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IoCiAgICAgbV9z
dHViSW5mby0+cGF0Y2gudXNlZFJlZ2lzdGVycy5zZXQoYmFzZSk7CiAgICAgbV9zdHViSW5mby0+
cGF0Y2gudXNlZFJlZ2lzdGVycy5zZXQodmFsdWUpOwogICAgIAotICAgIG1fc3R1YkluZm8tPnBh
dGNoLmNhbGxGcmFtZVJlZ2lzdGVyID0gc3RhdGljX2Nhc3Q8aW50OF90PihjYWxsRnJhbWVSZWdp
c3Rlcik7CiAgICAgbV9zdHViSW5mby0+cGF0Y2guYmFzZUdQUiA9IHN0YXRpY19jYXN0PGludDhf
dD4oYmFzZS5wYXlsb2FkR1BSKCkpOwogICAgIG1fc3R1YkluZm8tPnBhdGNoLnZhbHVlR1BSID0g
c3RhdGljX2Nhc3Q8aW50OF90Pih2YWx1ZS5wYXlsb2FkR1BSKCkpOwogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCkBAIC0xMzAsMTEgKzEyOSw5IEBAIHZvaWQgSklUR2V0QnlJZEdlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGEKIAogSklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIs
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwKLSAg
ICBib29sIHJlZ2lzdGVyc0ZsdXNoZWQsIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtp
bmQpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKAotICAgICAgICBjb2RlQmxvY2ssIGNvZGVPcmln
aW4sIHVzZWRSZWdpc3RlcnMsIGNhbGxGcmFtZVJlZ2lzdGVyLCBiYXNlLCB2YWx1ZSwKLSAgICAg
ICAgcmVnaXN0ZXJzRmx1c2hlZCkKKyAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2
YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIGJvb2wgcmVnaXN0ZXJzRmx1c2hlZCwKKyAgICBFQ01BTW9k
ZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kKQorICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2Rl
QmxvY2ssIGNvZGVPcmlnaW4sIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCByZWdpc3RlcnNG
bHVzaGVkKQogICAgICwgbV9zY3JhdGNoKHNjcmF0Y2gpCiAgICAgLCBtX2VjbWFNb2RlKGVjbWFN
b2RlKQogICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCShyZXZpc2lvbiAxNjA1
NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDggKzU2LDggQEAgcHJvdGVjdGVkOgogICAgIEpJVEJ5
SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVC
bG9jayosIENvZGVPcmlnaW4sIGNvbnN0IFJlZ2lzdGVyU2V0JiwgR1BSUmVnIGNhbGxGcmFtZVJl
Z2lzdGVyLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgYm9v
bCByZWdpc3RlcnNGbHVzaGVkKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29u
c3QgUmVnaXN0ZXJTZXQmLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwKKyAg
ICAgICAgYm9vbCByZWdpc3RlcnNGbHVzaGVkKTsKICAgICAKIHB1YmxpYzoKICAgICB2b2lkIHJl
cG9ydFNsb3dQYXRoQ2FsbChNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgc2xvd1BhdGhCZWdpbiwgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCkKQEAgLTk2LDExICs5Niw4IEBAIHB1YmxpYzoKIAogICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3IoCiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAg
ICAgICBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHZhbHVlLAotICAgICAgICBib29sIHJlZ2lzdGVyc0ZsdXNoZWQpCi0gICAgICAgIDogSklU
QnlJZEdlbmVyYXRvcigKLSAgICAgICAgICAgIGNvZGVCbG9jaywgY29kZU9yaWdpbiwgdXNlZFJl
Z2lzdGVycywgY2FsbEZyYW1lUmVnaXN0ZXIsIGJhc2UsIHZhbHVlLAotICAgICAgICAgICAgcmVn
aXN0ZXJzRmx1c2hlZCkKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFs
dWUsIGJvb2wgcmVnaXN0ZXJzRmx1c2hlZCkKKyAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNv
ZGVCbG9jaywgY29kZU9yaWdpbiwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHJlZ2lzdGVy
c0ZsdXNoZWQpCiAgICAgewogICAgIH0KICAgICAKQEAgLTExMiw5ICsxMDksOCBAQCBwdWJsaWM6
CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRv
cigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciwKLSAgICAgICAgSlNWYWx1ZVJl
Z3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBib29sIHJlZ2lzdGVy
c0ZsdXNoZWQsCi0gICAgICAgIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAgICAgICAgQ29kZUJsb2Nr
KiwgQ29kZU9yaWdpbiwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVS
ZWdzIGJhc2UsCisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgYm9v
bCByZWdpc3RlcnNGbHVzaGVkLCBFQ01BTW9kZSwgUHV0S2luZCk7CiAgICAgCiAgICAgdm9pZCBn
ZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTYw
NTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWQoSW5zdHJ1Y3Rpb24qCiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIFJlZ2lzdGVyU2V0
OjpzcGVjaWFsUmVnaXN0ZXJzKCksCi0gICAgICAgIGNhbGxGcmFtZVJlZ2lzdGVyLCBKU1ZhbHVl
UmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgdHJ1ZSk7CisgICAgICAgIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCB0cnVlKTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAg
ICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpAQCAtNTY1LDggKzU2NSw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbioKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3Ig
Z2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwg
UmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcnMoKSwKLSAgICAgICAgY2FsbEZyYW1lUmVnaXN0
ZXIsIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgdHJ1ZSwK
LSAgICAgICAgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERp
cmVjdCk7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBy
ZWdUMiwgdHJ1ZSwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksCisgICAgICAgIGRpcmVjdCA/IERp
cmVjdCA6IE5vdERpcmVjdCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDE2MDU2NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDExICs0Nyw2
IEBAIG5hbWVzcGFjZSBKU0MgewogLy8gdGhhdCB3b3VsZCBvcmRpbmFyaWx5IGhhdmUgd2VsbC1r
bm93biB2YWx1ZXM6CiAvLyAtIHRhZ1R5cGVOdW1iZXJSZWdpc3RlcgogLy8gLSB0YWdNYXNrUmVn
aXN0ZXIKLS8vIC0gY2FsbEZyYW1lUmVnaXN0ZXIgKioKLS8vCi0vLyBXZSBjdXJyZW50bHkgb25s
eSB1c2UgdGhlIGNhbGxGcmFtZVJlZ2lzdGVyIGZvciBjbG9zdXJlIGNhbGwgcGF0Y2hpbmcsIGFu
ZCB3ZSdyZSBub3QgZ29pbmcgdG8KLS8vIGdpdmUgdGhlIEZUTCBjbG9zdXJlIGNhbGwgcGF0Y2hp
bmcgc3VwcG9ydCB1bnRpbCB3ZSBzd2l0Y2ggdG8gdGhlIEMgc3RhY2sgLSBidXQgd2hlbiB3ZSBk
byB0aGF0LAotLy8gY2FsbEZyYW1lUmVnaXN0ZXIgd2lsbCBkaXNhcHBlYXIuCiAKIHN0YXRpYyBG
dW5jdGlvblB0ciByZWFkQ2FsbFRhcmdldChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBD
b2RlTG9jYXRpb25DYWxsIGNhbGwpCiB7CkBAIC00OTUsNyArNDkwLDYgQEAgc3RhdGljIGJvb2wg
dHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAogICAgICAgICAKICAgICAgICAgc3R1YkluZm8u
dS5nZXRCeUlkU2VsZkxpc3QubGlzdFNpemUrKzsKICAgICAgICAgCi0gICAgICAgIEdQUlJlZyBj
YWxsRnJhbWVSZWdpc3RlciA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guY2Fs
bEZyYW1lUmVnaXN0ZXIpOwogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRpY19jYXN0PEdQ
UlJlZz4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUik7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAg
ICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8u
cGF0Y2gudmFsdWVUYWdHUFIpOwpAQCAtNTE5LDYgKzUxMywxMCBAQCBzdGF0aWMgYm9vbCB0cnlC
dWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHN1
Y2Nlc3M7CiAgICAgICAgIAogICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpIHx8
IHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMg
Y29kZSBzaG91bGRuJ3QgYmUgYXNzdW1pbmcgdGhhdCB0aGUgdG9wIG9mIHN0YWNrIGlzIHNldCB1
cCBmb3IgSlNDCisgICAgICAgICAgICAvLyBKSVQtc3R5bGUgQyBjYWxscywgc2luY2Ugd2UgbWF5
IGJlIGN1cnJlbnRseSBvbiB0b3Agb2YgYW4gRlRMIGZyYW1lLgorICAgICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTcxMQorICAgICAgICAgICAg
CiAgICAgICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpKSB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKHNjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGJhc2VHUFIgIT0gc2NyYXRjaEdQUik7CkBAIC01MzYsMTEgKzUzNCwxMSBAQCBz
dGF0aWMgYm9vbCB0cnlCdWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgICAgICAgICAg
ICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIG9m
ZnNldFJlbGF0aXZlVG9CYXNlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpKSwgc2NyYXRjaEdQUik7CiAj
ZW5kaWYKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3R1YkppdC5zZXR1cEFy
Z3VtZW50cyhjYWxsRnJhbWVSZWdpc3RlciwgYmFzZUdQUiwgc2NyYXRjaEdQUik7CisgICAgICAg
ICAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYmFzZUdQUiwgc2Ny
YXRjaEdQUik7CiAgICAgICAgICAgICAgICAgb3BlcmF0aW9uRnVuY3Rpb24gPSBvcGVyYXRpb25D
YWxsR2V0dGVyOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHViSml0
LnNldHVwQXJndW1lbnRzKAotICAgICAgICAgICAgICAgICAgICBjYWxsRnJhbWVSZWdpc3Rlciwg
YmFzZUdQUiwKKyAgICAgICAgICAgICAgICBzdHViSml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgYmFzZUdQUiwKICAgICAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoRnVuY3Rpb25QdHIoc2xvdC5jdXN0b21HZXR0
ZXIoKSkuZXhlY3V0YWJsZUFkZHJlc3MoKSksCiAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGlkZW50LmltcGwoKSkpOwogICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbkZ1bmN0aW9uID0gb3BlcmF0aW9uQ2FsbEN1c3RvbUdldHRlcjsKQEAgLTc5Myw3ICs3
OTEsNiBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCiB7CiAgICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7CiAKLSAgICBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBzdGF0aWNf
Y2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICBHUFJS
ZWcgYmFzZUdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUik7
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBHUFJSZWcgdmFsdWVUYWdHUFIgPSBzdGF0aWNf
Y2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVlVGFnR1BSKTsKQEAgLTk1MCw5ICs5NDcs
OSBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0VHJhbnNpdGlvblN0dWIoCiAgICAgICAgIFNjcmF0Y2hC
dWZmZXIqIHNjcmF0Y2hCdWZmZXIgPSB2bS0+c2NyYXRjaEJ1ZmZlckZvclNpemUoYWxsb2NhdG9y
LmRlc2lyZWRTY3JhdGNoQnVmZmVyU2l6ZSgpKTsKICAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZl
VXNlZFJlZ2lzdGVyc1RvU2NyYXRjaEJ1ZmZlcihzdHViSml0LCBzY3JhdGNoQnVmZmVyLCBzY3Jh
dGNoR1BSMSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3Vt
ZW50cyhjYWxsRnJhbWVSZWdpc3RlciwgYmFzZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzbG90LmNhY2hl
ZE9mZnNldCgpKSwgdmFsdWVHUFIpOworICAgICAgICBzdHViSml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShiYXNlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1
cmUpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHNsb3QuY2FjaGVkT2Zmc2V0KCkpLCB2
YWx1ZUdQUik7CiAjZWxzZQotICAgICAgICBzdHViSml0LnNldHVwQXJndW1lbnRzKGNhbGxGcmFt
ZVJlZ2lzdGVyLCBiYXNlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1
cmUpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHNsb3QuY2FjaGVkT2Zmc2V0KCkpLCB2
YWx1ZUdQUiwgdmFsdWVUYWdHUFIpOworICAgICAgICBzdHViSml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShiYXNlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1
cmUpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHNsb3QuY2FjaGVkT2Zmc2V0KCkpLCB2
YWx1ZUdQUiwgdmFsdWVUYWdHUFIpOwogI2VuZGlmCiAgICAgICAgIG9wZXJhdGlvbkNhbGwgPSBz
dHViSml0LmNhbGwoKTsKICAgICAgICAgYWxsb2NhdG9yLnJlc3RvcmVVc2VkUmVnaXN0ZXJzRnJv
bVNjcmF0Y2hCdWZmZXIoc3R1YkppdCwgc2NyYXRjaEJ1ZmZlciwgc2NyYXRjaEdQUjEpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24g
MTYwNTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5Nyw5IEBAIHVuaW9uIEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IgewogI2VuZGlmCiB9OwogCisjZGVmaW5lIFRhZ09mZnNldCAoT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKQorI2RlZmluZSBQYXlsb2FkT2Zmc2V0
IChPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQp
KQorCiBlbnVtIFdoaWNoVmFsdWVXb3JkIHsKICAgICBUYWdXb3JkLAogICAgIFBheWxvYWRXb3Jk
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219232</attachid>
            <date>2013-12-13 21:24:58 -0800</date>
            <delta_ts>2013-12-14 10:54:25 -0800</delta_ts>
            <desc>it sort of runs crypto</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>52632</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxNjA1ODUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuIEFkZHJlc3MoYmFzZSwgb2Zmc2V0ICsgYWRkaXRpb25hbE9mZnNldCk7CiAgICAgICAgIH0K
LQorICAgICAgICAKICAgICAgICAgUmVnaXN0ZXJJRCBiYXNlOwogICAgICAgICBpbnQzMl90IG9m
ZnNldDsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDE2MDU4NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjUsNyArMjI1LDYgQEAgc3RydWN0IFN0cnVjdHVyZVN0dWJJbmZvIHsKIAogICAgIHN0cnVj
dCB7CiAgICAgICAgIGludDhfdCByZWdpc3RlcnNGbHVzaGVkOwotICAgICAgICBpbnQ4X3QgY2Fs
bEZyYW1lUmVnaXN0ZXI7CiAgICAgICAgIGludDhfdCBiYXNlR1BSOwogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCiAgICAgICAgIGludDhfdCB2YWx1ZVRhZ0dQUjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTYw
NTg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDggKzIxMyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlVUludDMKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQo
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJn
ZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCiB7CiAgICAgSklUR2V0QnlJZEdlbmVy
YXRvciBnZW4oCi0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCB1c2VkUmVn
aXN0ZXJzKCksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLAotICAgICAgICBKU1ZhbHVlUmVn
cyhiYXNlR1BSKSwgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgc3BpbGxNb2RlICE9IE5lZWRUb1Nw
aWxsKTsKKyAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIHVzZWRSZWdpc3Rl
cnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdEdQ
UiksIHNwaWxsTW9kZSAhPSBOZWVkVG9TcGlsbCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
bV9qaXQpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CkBAIC0y
MzUsOSArMjM1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlTwog
ICAgIHdyaXRlQmFycmllcihiYXNlR1BSLCB2YWx1ZUdQUiwgdmFsdWVVc2UsIFdyaXRlQmFycmll
ckZvclByb3BlcnR5QWNjZXNzLCBzY3JhdGNoR1BSKTsKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0
b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgdXNlZFJlZ2lz
dGVycygpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwKLSAgICAgICAgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgc2NyYXRjaEdQUiwgZmFsc2UsCi0gICAg
ICAgIG1faml0LmVjbWFNb2RlRm9yKGNvZGVPcmlnaW4pLCBwdXRLaW5kKTsKKyAgICAgICAgbV9q
aXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIHVzZWRSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksCisgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgc2NyYXRjaEdQUiwgZmFs
c2UsIG1faml0LmVjbWFNb2RlRm9yKGNvZGVPcmlnaW4pLCBwdXRLaW5kKTsKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNs
b3dDYXNlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0
aW9ucy5oCShyZXZpc2lvbiAxNjA1ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFiYnJldmlhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQCBzdGF0aWMg
aW5saW5lIExUeXBlIGZsb2F0VHlwZShMQ29udGV4dCBjCiBzdGF0aWMgaW5saW5lIExUeXBlIGRv
dWJsZVR5cGUoTENvbnRleHQgY29udGV4dCkgeyByZXR1cm4gbGx2bS0+RG91YmxlVHlwZUluQ29u
dGV4dChjb250ZXh0KTsgfQogCiBzdGF0aWMgaW5saW5lIExUeXBlIHBvaW50ZXJUeXBlKExUeXBl
IHR5cGUpIHsgcmV0dXJuIGxsdm0tPlBvaW50ZXJUeXBlKHR5cGUsIDApOyB9CitzdGF0aWMgaW5s
aW5lIExUeXBlIGFycmF5VHlwZShMVHlwZSB0eXBlLCB1bnNpZ25lZCBjb3VudCkgeyByZXR1cm4g
bGx2bS0+QXJyYXlUeXBlKHR5cGUsIGNvdW50KTsgfQogc3RhdGljIGlubGluZSBMVHlwZSB2ZWN0
b3JUeXBlKExUeXBlIHR5cGUsIHVuc2lnbmVkIGNvdW50KSB7IHJldHVybiBsbHZtLT5WZWN0b3JU
eXBlKHR5cGUsIGNvdW50KTsgfQogCiBlbnVtIFBhY2tpbmdNb2RlIHsgTm90UGFja2VkLCBQYWNr
ZWQgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAJKHJldmlzaW9uIDE2MDU4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksOCArODksNiBAQCBpbmxpbmUg
Q2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBVcHNpbG9uOgogICAg
IGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBMb29wSGludDoKLSAgICBjYXNl
IENhbGw6Ci0gICAgY2FzZSBDb25zdHJ1Y3Q6CiAgICAgY2FzZSBHZXRNeVNjb3BlOgogICAgIGNh
c2UgU2tpcFNjb3BlOgogICAgIGNhc2UgR2V0Q2xvc3VyZVJlZ2lzdGVyczoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2aXNpb24gMTYwNTg1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTUxLDYgKzE1MSwxOSBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01h
cHMoCiB7CiAgICAgVk0mIHZtID0gc3RhdGUuZ3JhcGgubV92bTsKICAgICBTdGFja01hcHMgc3Rh
Y2ttYXBzID0gaml0Q29kZS0+c3RhY2ttYXBzOworICAgIAorICAgIFN0YWNrTWFwczo6UmVjb3Jk
TWFwOjppdGVyYXRvciBpdGVyID0gcmVjb3JkTWFwLmZpbmQoc3RhdGUuY2FwdHVyZWRTdGFja21h
cElEKTsKKyAgICBSRUxFQVNFX0FTU0VSVChpdGVyICE9IHJlY29yZE1hcC5lbmQoKSk7CisgICAg
UkVMRUFTRV9BU1NFUlQoaXRlci0+dmFsdWUubG9jYXRpb25zLnNpemUoKSA9PSAxKTsKKyAgICBM
b2NhdGlvbiBjYXB0dXJlZExvY2F0aW9uID0KKyAgICAgICAgTG9jYXRpb246OmZvclN0YWNrbWFw
cygmaml0Q29kZS0+c3RhY2ttYXBzLCBpdGVyLT52YWx1ZS5sb2NhdGlvbnNbMF0pOworICAgIFJF
TEVBU0VfQVNTRVJUKGNhcHR1cmVkTG9jYXRpb24ua2luZCgpID09IExvY2F0aW9uOjpSZWdpc3Rl
cik7CisgICAgUkVMRUFTRV9BU1NFUlQoY2FwdHVyZWRMb2NhdGlvbi5ncHIoKSA9PSBHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgUkVMRUFTRV9BU1NFUlQoIShjYXB0dXJlZExvY2F0
aW9uLmFkZGVuZCgpICUgc2l6ZW9mKFJlZ2lzdGVyKSkpOworICAgIGludDMyX3QgbG9jYWxzT2Zm
c2V0ID0gY2FwdHVyZWRMb2NhdGlvbi5hZGRlbmQoKSAvIHNpemVvZihSZWdpc3RlcikgKyBzdGF0
ZS5ncmFwaC5tX25leHRNYWNoaW5lTG9jYWw7CisgICAgCisgICAgLy8gRklYTUU6IE5lZWQgdG8g
dXBkYXRlIGFsbCBtYWNoaW5lIHZpcnR1YWwgcmVnaXN0ZXJzIGluIHJ1bnRpbWUgbWV0YS1kYXRh
LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU3MjUK
IAogICAgIEV4aXRUaHVua0dlbmVyYXRvciBleGl0VGh1bmtHZW5lcmF0b3Ioc3RhdGUpOwogICAg
IGV4aXRUaHVua0dlbmVyYXRvci5lbWl0VGh1bmtzKCk7CkBAIC0xNjcsMTUgKzE4MCwyOSBAQCBz
dGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAgICAgICAgICAgICBpZiAo
T3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0aW9uKCkpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygi
SGFuZGxpbmcgT1NSIHN0YWNrbWFwICMiLCBleGl0Lm1fc3RhY2ttYXBJRCwgIlxuIik7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIFN0YWNrTWFwczo6UmVjb3JkTWFwOjppdGVyYXRvciBpdGVy
ID0gcmVjb3JkTWFwLmZpbmQoZXhpdC5tX3N0YWNrbWFwSUQpOworICAgICAgICAgICAgaXRlciA9
IHJlY29yZE1hcC5maW5kKGV4aXQubV9zdGFja21hcElEKTsKICAgICAgICAgICAgIGlmIChpdGVy
ID09IHJlY29yZE1hcC5lbmQoKSkgewogICAgICAgICAgICAgICAgIC8vIEl0IHdhcyBvcHRpbWl6
ZWQgb3V0LgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBpbmZvLm1fdGh1bmtBZGRyZXNzID0gbGlua0J1ZmZlci0+bG9j
YXRpb25PZihpbmZvLm1fdGh1bmtMYWJlbCk7Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIGV4
aXQubV9wYXRjaGFibGVDb2RlT2Zmc2V0ID0gbGlua0J1ZmZlci0+b2Zmc2V0T2YoaW5mby5tX3Ro
dW5rSnVtcCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IGV4
aXQubV92YWx1ZXMuc2l6ZSgpOyBqLS07KSB7CisgICAgICAgICAgICAgICAgRXhpdFZhbHVlIHZh
bHVlID0gZXhpdC5tX3ZhbHVlc1tqXTsKKyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzSW5K
U1N0YWNrU29tZWhvdygpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgICAgICBpZiAoIXZhbHVlLnZpcnR1YWxSZWdpc3RlcigpLmlzTG9jYWwoKSkKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgZXhpdC5tX3ZhbHVlc1tqXSA9
IHZhbHVlLndpdGhWaXJ0dWFsUmVnaXN0ZXIoCisgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3Rlcih2YWx1ZS52aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSArIGxvY2Fsc09mZnNldCkp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoT3B0aW9uczo6
dmVyYm9zZUNvbXBpbGF0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBEdW1wQ29udGV4dCBjb250
ZXh0OworICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBFeGl0IHZhbHVlczogIiwgaW5Db250
ZXh0KGV4aXQubV92YWx1ZXMsICZjb250ZXh0KSwgIlxuIik7CisgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0YXRlLmZpbmFsaXplci0+ZXhpdFRodW5rc0xpbmtC
dWZmZXIgPSBsaW5rQnVmZmVyLnJlbGVhc2UoKTsKQEAgLTE5MCw3ICsyMTcsNyBAQCBzdGF0aWMg
dm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAgICAgICAgICAgICBpZiAoT3B0aW9u
czo6dmVyYm9zZUNvbXBpbGF0aW9uKCkpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiSGFuZGxp
bmcgR2V0QnlJZCBzdGFja21hcCAjIiwgZ2V0QnlJZC5zdGFja21hcElEKCksICJcbiIpOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBTdGFja01hcHM6OlJlY29yZE1hcDo6aXRlcmF0b3IgaXRl
ciA9IHJlY29yZE1hcC5maW5kKGdldEJ5SWQuc3RhY2ttYXBJRCgpKTsKKyAgICAgICAgICAgIGl0
ZXIgPSByZWNvcmRNYXAuZmluZChnZXRCeUlkLnN0YWNrbWFwSUQoKSk7CiAgICAgICAgICAgICBp
ZiAoaXRlciA9PSByZWNvcmRNYXAuZW5kKCkpIHsKICAgICAgICAgICAgICAgICAvLyBJdCB3YXMg
b3B0aW1pemVkIG91dC4KICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIwMiwxOCArMjI5
LDE3IEBAIHN0YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICAgICAg
ICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJz
KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHQgPSByZWNvcmQubG9j
YXRpb25zWzBdLmRpcmVjdEdQUigpOwotICAgICAgICAgICAgR1BSUmVnIGNhbGxGcmFtZVJlZ2lz
dGVyID0gcmVjb3JkLmxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKTsKLSAgICAgICAgICAgIEdQUlJl
ZyBiYXNlID0gcmVjb3JkLmxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKTsKKyAgICAgICAgICAgIEdQ
UlJlZyBiYXNlID0gcmVjb3JkLmxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgICAgICAgICAg
Y29kZUJsb2NrLCBnZXRCeUlkLmNvZGVPcmlnaW4oKSwgdXNlZFJlZ2lzdGVycywgY2FsbEZyYW1l
UmVnaXN0ZXIsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZSksIEpTVmFsdWVSZWdz
KHJlc3VsdCksIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBjb2RlQmxvY2ssIGdldEJ5SWQuY29k
ZU9yaWdpbigpLCB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyhiYXNlKSwKKyAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncyhyZXN1bHQpLCBmYWxzZSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBiZWdpbiA9IHNsb3dQYXRoSklULmxhYmVsKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBjYWxs
T3BlcmF0aW9uKAogICAgICAgICAgICAgICAgIHN0YXRlLCB1c2VkUmVnaXN0ZXJzLCBzbG93UGF0
aEpJVCwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCByZXN1bHQsCi0gICAgICAgICAgICAgICAg
Y2FsbEZyYW1lUmVnaXN0ZXIsIGdlbi5zdHViSW5mbygpLCBiYXNlLCBnZXRCeUlkLnVpZCgpKTsK
KyAgICAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKSwgYmFzZSwgZ2V0QnlJZC51aWQoKSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoYmVnaW4sIGNh
bGwpOwogICAgICAgICAgICAgCkBAIC0yMjcsNyArMjUzLDcgQEAgc3RhdGljIHZvaWQgZml4RnVu
Y3Rpb25CYXNlZE9uU3RhY2tNYXBzKAogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VD
b21waWxhdGlvbigpKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkhhbmRsaW5nIFB1dEJ5SWQg
c3RhY2ttYXAgIyIsIHB1dEJ5SWQuc3RhY2ttYXBJRCgpLCAiXG4iKTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgU3RhY2tNYXBzOjpSZWNvcmRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSByZWNvcmRN
YXAuZmluZChwdXRCeUlkLnN0YWNrbWFwSUQoKSk7CisgICAgICAgICAgICBpdGVyID0gcmVjb3Jk
TWFwLmZpbmQocHV0QnlJZC5zdGFja21hcElEKCkpOwogICAgICAgICAgICAgaWYgKGl0ZXIgPT0g
cmVjb3JkTWFwLmVuZCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gSXQgd2FzIG9wdGltaXplZCBv
dXQuCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0yMzgsMjAgKzI2NCwxOSBAQCBzdGF0
aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAgICAgICAgICAgICAvLyBGSVhN
RTogTExWTSBzaG91bGQgdGVsbCB1cyB3aGljaCByZWdpc3RlcnMgYXJlIGxpdmUuCiAgICAgICAg
ICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQ6OmFsbFJlZ2lzdGVy
cygpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIg
PSByZWNvcmQubG9jYXRpb25zWzBdLmRpcmVjdEdQUigpOwotICAgICAgICAgICAgR1BSUmVnIGJh
c2UgPSByZWNvcmQubG9jYXRpb25zWzFdLmRpcmVjdEdQUigpOwotICAgICAgICAgICAgR1BSUmVn
IHZhbHVlID0gcmVjb3JkLmxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKTsKKyAgICAgICAgICAgIEdQ
UlJlZyBiYXNlID0gcmVjb3JkLmxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKTsKKyAgICAgICAgICAg
IEdQUlJlZyB2YWx1ZSA9IHJlY29yZC5sb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAg
ICAgIGNvZGVCbG9jaywgcHV0QnlJZC5jb2RlT3JpZ2luKCksIHVzZWRSZWdpc3RlcnMsIGNhbGxG
cmFtZVJlZ2lzdGVyLAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKGJhc2UpLCBKU1ZhbHVl
UmVncyh2YWx1ZSksIE1hY3JvQXNzZW1ibGVyOjpzY3JhdGNoUmVnaXN0ZXIsCi0gICAgICAgICAg
ICAgICAgZmFsc2UsIHB1dEJ5SWQuZWNtYU1vZGUoKSwgcHV0QnlJZC5wdXRLaW5kKCkpOworICAg
ICAgICAgICAgICAgIGNvZGVCbG9jaywgcHV0QnlJZC5jb2RlT3JpZ2luKCksIHVzZWRSZWdpc3Rl
cnMsIEpTVmFsdWVSZWdzKGJhc2UpLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVl
KSwgTWFjcm9Bc3NlbWJsZXI6OnNjcmF0Y2hSZWdpc3RlciwgZmFsc2UsIHB1dEJ5SWQuZWNtYU1v
ZGUoKSwKKyAgICAgICAgICAgICAgICBwdXRCeUlkLnB1dEtpbmQoKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBiZWdpbiA9IHNsb3dQYXRoSklULmxh
YmVsKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgIHN0YXRlLCB1c2VkUmVnaXN0ZXJz
LCBzbG93UGF0aEpJVCwgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgY2FsbEZyYW1lUmVnaXN0ZXIs
Ci0gICAgICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCksIHZhbHVlLCBiYXNlLCBwdXRCeUlkLnVp
ZCgpKTsKKyAgICAgICAgICAgICAgICBzdGF0ZSwgdXNlZFJlZ2lzdGVycywgc2xvd1BhdGhKSVQs
IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIGdlbi5zdHViSW5mbygpLAorICAgICAgICAgICAgICAg
IHZhbHVlLCBiYXNlLCBwdXRCeUlkLnVpZCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChiZWdpbiwgY2FsbCk7CiAgICAgICAgICAgICAKQEAgLTI3
OSw3ICszMDQsNyBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAg
ICAgZm9yICh1bnNpZ25lZCBleGl0SW5kZXggPSBqaXRDb2RlLT5vc3JFeGl0LnNpemUoKTsgZXhp
dEluZGV4LS07KSB7CiAgICAgICAgIE9TUkV4aXRDb21waWxhdGlvbkluZm8mIGluZm8gPSBzdGF0
ZS5maW5hbGl6ZXItPm9zckV4aXRbZXhpdEluZGV4XTsKICAgICAgICAgT1NSRXhpdCYgZXhpdCA9
IGppdENvZGUtPm9zckV4aXRbZXhpdEluZGV4XTsKLSAgICAgICAgU3RhY2tNYXBzOjpSZWNvcmRN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSByZWNvcmRNYXAuZmluZChleGl0Lm1fc3RhY2ttYXBJRCk7Cisg
ICAgICAgIGl0ZXIgPSByZWNvcmRNYXAuZmluZChleGl0Lm1fc3RhY2ttYXBJRCk7CiAgICAgICAg
IGlmIChpdGVyID09IHJlY29yZE1hcC5lbmQoKSkgewogICAgICAgICAgICAgLy8gVGhpcyBjb3Vs
ZCBoYXBwZW4gaWYgTExWTSBvcHRpbWl6ZXMgb3V0IGFuIE9TUiBleGl0LgogICAgICAgICAgICAg
Y29udGludWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmgJ
KHJldmlzaW9uIDE2MDU4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFZh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsMTUgQEAgcHVibGljOgogICAgICAg
ICBBU1NFUlQoaXNJbkpTU3RhY2tTb21laG93KCkpOwogICAgICAgICByZXR1cm4gVmlydHVhbFJl
Z2lzdGVyKHUudmlydHVhbFJlZ2lzdGVyKTsKICAgICB9CisgICAgCisgICAgRXhpdFZhbHVlIHdp
dGhWaXJ0dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKKyAgICB7
CisgICAgICAgIEFTU0VSVChpc0luSlNTdGFja1NvbWVob3coKSk7CisgICAgICAgIEV4aXRWYWx1
ZSByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2tpbmQgPSBtX2tpbmQ7CisgICAgICAgIHJlc3Vs
dC51LnZpcnR1YWxSZWdpc3RlciA9IHZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CiAKICAgICAvLyBJZiBpdCdzIGluIHRoZSBKU1N0YWNrIHNv
bWVob3csIHRoaXMgd2lsbCB0ZWxsIHlvdSB3aGF0IGZvcm1hdCBpdCdzIGluLCBpbiBhIG1hbm5l
cgogICAgIC8vIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIGV4aXRBcmd1bWVudCgpLmZvcm1hdCgp
LiBJZiBpdCdzIGEgY29uc3RhbnQgb3IgaXQncyBkZWFkLCBpdApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmgJKHJldmlzaW9u
IDE2MDU4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3Np
dG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhhZGRXaXRoT3ZlcmZsb3czMiwgImxsdm0uc2FkZC53
aXRoLm92ZXJmbG93LmkzMiIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RUeXBlKG1fY29udGV4dCwgaW50
MzIsIGJvb2xlYW4pLCBpbnQzMiwgaW50MzIpKSBcCiAgICAgbWFjcm8oYWRkV2l0aE92ZXJmbG93
NjQsICJsbHZtLnNhZGQud2l0aC5vdmVyZmxvdy5pNjQiLCBmdW5jdGlvblR5cGUoc3RydWN0VHlw
ZShtX2NvbnRleHQsIGludDY0LCBib29sZWFuKSwgaW50NjQsIGludDY0KSkgXAogICAgIG1hY3Jv
KGRvdWJsZUFicywgImxsdm0uZmFicy5mNjQiLCBmdW5jdGlvblR5cGUoZG91YmxlVHlwZSwgZG91
YmxlVHlwZSkpIFwKKyAgICBtYWNybyhmcmFtZUFkZHJlc3MsICJsbHZtLmZyYW1lYWRkcmVzcyIs
IGZ1bmN0aW9uVHlwZShwb2ludGVyVHlwZShpbnQ4KSwgaW50MzIpKSBcCiAgICAgbWFjcm8obXVs
V2l0aE92ZXJmbG93MzIsICJsbHZtLnNtdWwud2l0aC5vdmVyZmxvdy5pMzIiLCBmdW5jdGlvblR5
cGUoc3RydWN0VHlwZShtX2NvbnRleHQsIGludDMyLCBib29sZWFuKSwgaW50MzIsIGludDMyKSkg
XAogICAgIG1hY3JvKG11bFdpdGhPdmVyZmxvdzY0LCAibGx2bS5zbXVsLndpdGgub3ZlcmZsb3cu
aTY0IiwgZnVuY3Rpb25UeXBlKHN0cnVjdFR5cGUobV9jb250ZXh0LCBpbnQ2NCwgYm9vbGVhbiks
IGludDY0LCBpbnQ2NCkpIFwKICAgICBtYWNybyhwYXRjaHBvaW50SW50NjQsICJsbHZtLmV4cGVy
aW1lbnRhbC5wYXRjaHBvaW50Lmk2NCIsIGZ1bmN0aW9uVHlwZShpbnQ2NCwgaW50MzIsIGludDMy
LCByZWY4LCBpbnQzMiwgVmFyaWFkaWMpKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEpJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMSklUQ29kZS5jcHAJKHJldmlzaW9uIDE2MDU4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDIxICs1NCwyNSBA
QCB2b2lkIEpJVENvZGU6OmFkZERhdGFTZWN0aW9uKFJlZkNvdW50ZWRBCiAgICAgbV9kYXRhU2Vj
dGlvbnMuYXBwZW5kKGRhdGFTZWN0aW9uKTsKIH0KIAotdm9pZCBKSVRDb2RlOjppbml0aWFsaXpl
Q29kZShDb2RlUmVmIGVudHJ5cG9pbnQpCit2b2lkIEpJVENvZGU6OmluaXRpYWxpemVFbnRyeXBv
aW50KENvZGVSZWYgZW50cnlwb2ludCkKIHsKICAgICBtX2VudHJ5cG9pbnQgPSBlbnRyeXBvaW50
OwogfQogCit2b2lkIEpJVENvZGU6OmluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChDb2RlUHRyIGFk
ZHJlc3MpCit7CisgICAgbV9hZGRyZXNzRm9yQ2FsbCA9IGFkZHJlc3M7Cit9CisKIEpJVENvZGU6
OkNvZGVQdHIgSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwoKQogewotICAgIFJFTEVBU0VfQVNTRVJU
KG1fZW50cnlwb2ludCk7Ci0gICAgcmV0dXJuIG1fZW50cnlwb2ludC5jb2RlKCk7CisgICAgcmV0
dXJuIG1fYWRkcmVzc0ZvckNhbGw7CiB9CiAKIHZvaWQqIEpJVENvZGU6OmV4ZWN1dGFibGVBZGRy
ZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2VudHJ5
cG9pbnQpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihtX2VudHJ5cG9pbnQu
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgb2Zmc2V0OworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNoYXIqPihtX2FkZHJlc3NGb3JDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsg
b2Zmc2V0OwogfQogCiB2b2lkKiBKSVRDb2RlOjpkYXRhQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5oCShyZXZpc2lvbiAxNjA1
ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNTYsNyArNTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFsaXplRXhpdFRo
dW5rcyhDb2RlUmVmKTsKICAgICB2b2lkIGFkZEhhbmRsZShQYXNzUmVmUHRyPEV4ZWN1dGFibGVN
ZW1vcnlIYW5kbGU+KTsKICAgICB2b2lkIGFkZERhdGFTZWN0aW9uKFJlZkNvdW50ZWRBcnJheTxM
U2VjdGlvbldvcmQ+KTsKLSAgICB2b2lkIGluaXRpYWxpemVDb2RlKENvZGVSZWYgZW50cnlwb2lu
dCk7CisgICAgdm9pZCBpbml0aWFsaXplRW50cnlwb2ludChDb2RlUmVmKTsKKyAgICB2b2lkIGlu
aXRpYWxpemVBZGRyZXNzRm9yQ2FsbChDb2RlUHRyKTsKICAgICAKICAgICBjb25zdCBWZWN0b3I8
UmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+PiYgaGFuZGxlcygpIGNvbnN0IHsgcmV0dXJu
IG1faGFuZGxlczsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWZDb3VudGVkQXJyYXk8TFNlY3Rpb25X
b3JkPj4mIGRhdGFTZWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVNlY3Rpb25zOyB9CkBA
IC03Myw2ICs3NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZkNvdW50ZWRB
cnJheTxMU2VjdGlvbldvcmQ+PiBtX2RhdGFTZWN0aW9uczsKICAgICBWZWN0b3I8UmVmUHRyPEV4
ZWN1dGFibGVNZW1vcnlIYW5kbGU+PiBtX2hhbmRsZXM7CisgICAgQ29kZVB0ciBtX2FkZHJlc3NG
b3JDYWxsOwogICAgIENvZGVSZWYgbV9lbnRyeXBvaW50OwogICAgIENvZGVSZWYgbV9leGl0VGh1
bmtzOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFs
aXplci5jcHAJKHJldmlzaW9uIDE2MDU4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMSklURmluYWxpemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsOSArNzMsNyBAQCBib29s
IEpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbigpCiAgICAgICAgICAgICBleGl0VGh1bmtz
TGlua0J1ZmZlci0+bGluaygKICAgICAgICAgICAgICAgICBpbmZvLm1fdGh1bmtKdW1wLAogICAg
ICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKAotICAgICAgICAgICAgICAgICAgICBtX3Bs
YW4udm0uZnRsVGh1bmtzLT5nZXRPU1JFeGl0R2VuZXJhdGlvblRodW5rKAotICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wbGFuLnZtLCBMb2NhdGlvbjo6Zm9yU3RhY2ttYXBzKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZqaXRDb2RlLT5zdGFja21hcHMsIGl0ZXItPnZhbHVlLmxvY2F0
aW9uc1swXSkpLmNvZGUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX3BsYW4udm0uZ2V0Q1RJ
U3R1Yihvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgaml0Q29kZS0+aW5pdGlhbGl6ZUV4aXRUaHVua3MoCkBAIC0x
MDUsNyArMTAzLDcgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24oKQogICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlDaGVjazsKICAgICBpZiAoYXJpdHlDaGVj
ay5pc1NldCgpKQogICAgICAgICB3aXRoQXJpdHlDaGVjayA9IGVudHJ5cG9pbnRMaW5rQnVmZmVy
LT5sb2NhdGlvbk9mKGFyaXR5Q2hlY2spOwotICAgIGppdENvZGUtPmluaXRpYWxpemVDb2RlKAor
ICAgIGppdENvZGUtPmluaXRpYWxpemVFbnRyeXBvaW50KAogICAgICAgICBGSU5BTElaRV9ERkdf
Q09ERSgKICAgICAgICAgICAgICplbnRyeXBvaW50TGlua0J1ZmZlciwKICAgICAgICAgICAgICgi
RlRMIGVudHJ5cG9pbnQgdGh1bmsgZm9yICVzIHdpdGggTExWTSBnZW5lcmF0ZWQgY29kZSBhdCAl
cCIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX3BsYW4uY29kZUJsb2NrLmdldCgp
LCBKSVRDb2RlOjpGVExKSVQpKS5kYXRhKCksIGZ1bmN0aW9uKSkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAxNjA1ODUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMiArNDMs
NiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBE
Rkc7CiAKLXN0YXRpYyB2b2lkIGNvbXBpbGVFbnRyeShDQ2FsbEhlbHBlcnMmIGppdCkKLXsKLSAg
ICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICBqaXQuZW1pdFB1dEltbWVkaWF0ZVRv
Q2FsbEZyYW1lSGVhZGVyKGppdC5jb2RlQmxvY2soKSwgSlNTdGFjazo6Q29kZUJsb2NrKTsKLX0K
LQogdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrOwpAQCAtNTYsNyArNTAsMTAgQEAgdm9pZCBsaW5rKFN0
YXRlJiBzdGF0ZSkKICAgICAvLyBMTFZNIHdpbGwgY3JlYXRlIGl0cyBvd24ganVtcCB0YWJsZXMg
YXMgbmVlZGVkLgogICAgIGNvZGVCbG9jay0+Y2xlYXJTd2l0Y2hKdW1wVGFibGVzKCk7CiAgICAg
Ci0gICAgc3RhdGUuaml0Q29kZS0+Y29tbW9uLmZyYW1lUmVnaXN0ZXJDb3VudCA9IHN0YXRlLmdy
YXBoLmZyYW1lUmVnaXN0ZXJDb3VudCgpOworICAgIC8vIEZJWE1FOiBOZWVkIHRvIGtub3cgdGhl
IHJlYWwgZnJhbWUgcmVnaXN0ZXIgY291bnQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNTcyNworICAgIHN0YXRlLmppdENvZGUtPmNvbW1vbi5mcmFt
ZVJlZ2lzdGVyQ291bnQgPSAxMDAwOworICAgIAogICAgIHN0YXRlLmppdENvZGUtPmNvbW1vbi5y
ZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ID0gc3RhdGUuZ3JhcGgucmVxdWlyZWRSZWdpc3Rl
ckNvdW50Rm9yRXhpdCgpOwogICAgIAogICAgIGlmICghc3RhdGUuZ3JhcGgubV9pbmxpbmVDYWxs
RnJhbWVzLT5pc0VtcHR5KCkpCkBAIC02NCw3MSArNjEsMjkgQEAgdm9pZCBsaW5rKFN0YXRlJiBz
dGF0ZSkKICAgICAKICAgICAvLyBDcmVhdGUgdGhlIGVudHJ5cG9pbnQuIE5vdGUgdGhhdCB3ZSB1
c2UgdGhpcyBlbnRyeXBvaW50IHRvdGFsbHkgZGlmZmVyZW50bHkKICAgICAvLyBkZXBlbmRpbmcg
b24gd2hldGhlciB3ZSdyZSBkb2luZyBPU1IgZW50cnkgb3Igbm90LgotICAgIC8vIEZJWE1FOiBF
eGNlcHQgZm9yIE9TUiBlbnRyeSwgdGhpcyBpcyBhIHRvdGFsIGtsdWRnZSAtIExMVk0gc2hvdWxk
IGp1c3QgdXNlIG91cgotICAgIC8vIGNhbGxpbmcgY29udmVudGlvbi4KLSAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNjIxCiAgICAgQ0NhbGxIZWxwZXJz
IGppdCgmc3RhdGUuZ3JhcGgubV92bSwgY29kZUJsb2NrKTsKICAgICAKICAgICBPd25QdHI8TGlu
a0J1ZmZlcj4gbGlua0J1ZmZlcjsKICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGFyaXR5Q2hlY2s7
CisKKyAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgZnJhbWUgPSBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoCisgICAgICAgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIC1zdGF0aWNf
Y2FzdDxpbnQzMl90PihzaXplb2Yodm9pZCopKSk7CisgICAgCiAgICAgc3dpdGNoIChzdGF0ZS5n
cmFwaC5tX3BsYW4ubW9kZSkgewogICAgIGNhc2UgRlRMTW9kZTogewotICAgICAgICBjb21waWxl
RW50cnkoaml0KTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtYWluUGF0aEp1bXBz
OwogICAgIAotICAgICAgICAvLyBUaGlzIHBhcnQgaXMgb25seSBuZWNlc3NhcnkgZm9yIGZ1bmN0
aW9ucy4gV2UgY3VycmVudGx5IG9ubHkgY29tcGlsZSBmdW5jdGlvbnMuCi0gICAgICAgIAotICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGZyb21Bcml0eUNoZWNrID0gaml0LmxhYmVsKCk7Ci0g
ICAgICAgIAotICAgICAgICAvLyBQbGFudCBhIGNoZWNrIHRoYXQgc3VmZmljaWVudCBzcGFjZSBp
cyBhdmFpbGFibGUgaW4gdGhlIEpTU3RhY2suCi0gICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYyOTEKLSAgICAgICAgaml0LmFkZFB0cigK
LSAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKHN0YXRlLmppdENvZGUtPmNvbW1vbi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0
KS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLAotICAgICAgICAgICAgR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QxKTsKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIHN0YWNrQ2hlY2sgPSBqaXQuYnJhbmNoUHRyKAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpBYm92ZSwKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKHN0YXRl
LmdyYXBoLm1fdm0uYWRkcmVzc09mSlNTdGFja0xpbWl0KCkpLAotICAgICAgICAgICAgR1BSSW5m
bzo6cmVnVDEpOwotICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGZyb21TdGFja0NoZWNrID0g
aml0LmxhYmVsKCk7Ci0gICAgICAgIAotICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHNFeGVjU3Rh
dGUoKTsKLSAgICAgICAgaml0Lm1vdmUoCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24p
KSwKLSAgICAgICAgICAgIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAgICBqaXQuY2FsbChH
UFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7
Ci0gICAgICAgIGppdC5yZXQoKTsKLSAgICAgICAgCi0gICAgICAgIHN0YWNrQ2hlY2subGluaygm
aml0KTsKLSAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNvZGVC
bG9jayksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgICAgIGppdC5tb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBqaXQu
c3RvcmUzMigKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKENhbGxGcmFt
ZTo6TG9jYXRpb246OmVuY29kZUFzQnl0ZWNvZGVPZmZzZXQoMCkpLAotICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpB
cmd1bWVudENvdW50KSkpOwotICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsICZzdGF0ZS5ncmFwaC5tX3ZtLnRvcENhbGxGcmFtZSk7Ci0gICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBjYWxsU3RhY2tDaGVjayA9IGppdC5jYWxsKCk7Ci0jaWYgIUFTU0VSVF9E
SVNBQkxFRAotICAgICAgICAvLyBGSVhNRTogbmVlZCB0byBtYWtlIHRoaXMgY2FsbCByZWdpc3Rl
ciB3aXRoIGV4Y2VwdGlvbiBoYW5kbGluZyBzb21laG93LiBUaGlzIGlzCi0gICAgICAgIC8vIHBh
cnQgb2YgYSBiaWdnZXIgcHJvYmxlbTogRlRMIHNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSBleGNl
cHRpb25zLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTEzNjIyCi0gICAgICAgIC8vIFVudGlsIHRoZW4sIHVzZSBhIEpJVCBBU1NFUlQuCi0gICAg
ICAgIGppdC5sb2FkNjQoc3RhdGUuZ3JhcGgubV92bS5hZGRyZXNzT2ZFeGNlcHRpb24oKSwgR1BS
SW5mbzo6cmVnVDApOwotICAgICAgICBqaXQuaml0QXNzZXJ0SXNOdWxsKEdQUkluZm86OnJlZ1Qw
KTsKLSNlbmRpZgotICAgICAgICBqaXQuanVtcChmcm9tU3RhY2tDaGVjayk7Ci0gICAgICAgIAot
ICAgICAgICBhcml0eUNoZWNrID0gaml0LmxhYmVsKCk7Ci0gICAgICAgIGNvbXBpbGVFbnRyeShq
aXQpOwogICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpwYXls
b2FkRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oSlNTdGFjazo6QXJndW1lbnRDb3Vu
dCkpLAorICAgICAgICAgICAgZnJhbWUud2l0aE9mZnNldChzaXplb2YoUmVnaXN0ZXIpICogSlNT
dGFjazo6QXJndW1lbnRDb3VudCksCiAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSk7Ci0gICAg
ICAgIGppdC5icmFuY2gzMigKKyAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5j
aDMyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIEdQUkluZm86OnJl
Z1QxLAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkpKQotICAgICAgICAgICAgLmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgJmpp
dCk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSkpKTsKKyAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAg
ICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOwogICAgICAgICBqaXQuc3RvcmUzMigKICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKENhbGxGcmFtZTo6TG9jYXRpb246OmVuY29kZUFzQnl0ZWNvZGVPZmZz
ZXQoMCkpLAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8Vmly
dHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjp0YWdGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOwogICAgICAgICBqaXQu
c3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZzdGF0ZS5ncmFwaC5tX3ZtLnRv
cENhbGxGcmFtZSk7CiAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsQXJpdHlDaGVjayA9
IGppdC5jYWxsKCk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtMTM5LDE2ICs5NCwyMCBAQCB2
b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBqaXQubG9hZDY0KHN0YXRlLmdyYXBoLm1f
dm0uYWRkcmVzc09mRXhjZXB0aW9uKCksIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgaml0Lmpp
dEFzc2VydElzTnVsbChHUFJJbmZvOjpyZWdUMSk7CiAjZW5kaWYKLSAgICAgICAgaWYgKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSICE9IEdQUkluZm86OnJlZ1QwKQotICAgICAgICAgICAgaml0Lm1v
dmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgaml0
LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QwKS5saW5rVG8o
ZnJvbUFyaXR5Q2hlY2ssICZqaXQpOworICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUiwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9n
dWUoKTsKKyAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaFRlc3QzMihDQ2Fs
bEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QwKSk7CisgICAgICAgIGppdC5lbWl0RnVuY3Rp
b25Qcm9sb2d1ZSgpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbEFyaXR5Rml4dXAg
PSBqaXQuY2FsbCgpOwotICAgICAgICBqaXQuanVtcChmcm9tQXJpdHlDaGVjayk7Ci0gICAgICAg
IAorICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgbWFpblBhdGhK
dW1wcy5hcHBlbmQoaml0Lmp1bXAoKSk7CisKICAgICAgICAgbGlua0J1ZmZlciA9IGFkb3B0UHRy
KG5ldyBMaW5rQnVmZmVyKHN0YXRlLmdyYXBoLm1fdm0sICZqaXQsIGNvZGVCbG9jaywgSklUQ29t
cGlsYXRpb25NdXN0U3VjY2VlZCkpOwotICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxTdGFj
a0NoZWNrLCBvcGVyYXRpb25TdGFja0NoZWNrKTsKICAgICAgICAgbGlua0J1ZmZlci0+bGluayhj
YWxsQXJpdHlDaGVjaywgY29kZUJsb2NrLT5tX2lzQ29uc3RydWN0b3IgPyBvcGVyYXRpb25Db25z
dHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2spOwogICAgICAgICBsaW5r
QnVmZmVyLT5saW5rKGNhbGxBcml0eUZpeHVwLCBGdW5jdGlvblB0cigoc3RhdGUuZ3JhcGgubV92
bS5nZXRDVElTdHViKGFyaXR5Rml4dXApKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwor
ICAgICAgICBsaW5rQnVmZmVyLT5saW5rKG1haW5QYXRoSnVtcHMsIENvZGVMb2NhdGlvbkxhYmVs
KGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7CisKKyAgICAg
ICAgc3RhdGUuaml0Q29kZS0+aW5pdGlhbGl6ZUFkZHJlc3NGb3JDYWxsKE1hY3JvQXNzZW1ibGVy
Q29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSkpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMTU3LDE2ICsxMTYsMTUgQEAgdm9p
ZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgLy8gdmFsdWVzIGludG8gdGhlIHNjcmF0Y2gg
YnVmZmVyLiBFdmVyeXRoaW5nIHNob3VsZCBiZSBnb29kIHRvIGdvIC0gYXQgdGhpcwogICAgICAg
ICAvLyBwb2ludCB3ZSd2ZSBldmVuIGRvbmUgdGhlIHN0YWNrIGNoZWNrLiBCYXNpY2FsbHkgd2Ug
anVzdCBoYXZlIHRvIG1ha2UgdGhlCiAgICAgICAgIC8vIGNhbGwgdG8gdGhlIExMVk0tZ2VuZXJh
dGVkIGNvZGUuCi0gICAgICAgIGppdC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOwotICAgICAg
ICBqaXQubW92ZSgKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihyZWlu
dGVycHJldF9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbikpLAotICAgICAgICAg
ICAgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFy
Z0dQUjApOworICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHN0YXJ0ID0gaml0LmxhYmVsKCk7
CiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICBqaXQucmV0KCk7
CisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBtYWluUGF0aEp1bXAgPSBqaXQuanVtcCgpOwog
ICAgICAgICAKICAgICAgICAgbGlua0J1ZmZlciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKAog
ICAgICAgICAgICAgc3RhdGUuZ3JhcGgubV92bSwgJmppdCwgY29kZUJsb2NrLCBKSVRDb21waWxh
dGlvbk11c3RTdWNjZWVkKSk7CisgICAgICAgIGxpbmtCdWZmZXItPmxpbmsobWFpblBhdGhKdW1w
LCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1
bmN0aW9uKSkpOworCisgICAgICAgIHN0YXRlLmppdENvZGUtPmluaXRpYWxpemVBZGRyZXNzRm9y
Q2FsbChsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHN0YXJ0KSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTYwNTg1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUx
LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAKIHN0YXRpYyBpbnQgY29tcGlsZUNvdW50ZXI7
CiAKKy8vIEZJWE1FOiBHZXQgcmlkIG9mIHRoaXMgYW5kIGludHJvZHVjZSBhIHJlYWwgc3RhY2sg
Y2hlY2suCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NjUw
CitzdGF0aWMgdWludHB0cl90IHN0YWNrTGltaXQ7CisKIC8vIFVzaW5nIHRoaXMgaW5zdGVhZCBv
ZiB0eXBlQ2hlY2soKSBoZWxwcyB0byByZWR1Y2UgdGhlIGxvYWQgb24gTExWTSwgYnkgY3JlYXRp
bmcKIC8vIHNpZ25pZmljYW50bHkgbGVzcyBkZWFkIGNvZGUuCiAjZGVmaW5lIEZUTF9UWVBFX0NI
RUNLKGxvd1ZhbHVlLCBoaWdoVmFsdWUsIHR5cGVzUGFzc2VkVGhyb3VnaCwgZmFpbENvbmRpdGlv
bikgZG8geyBcCkBAIC05MiwxOSArOTYsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgbGx2bS0+
TW9kdWxlQ3JlYXRlV2l0aE5hbWVJbkNvbnRleHQobmFtZS5kYXRhKCksIG1fZnRsU3RhdGUuY29u
dGV4dCk7CiAgICAgICAgIAogICAgICAgICBtX2Z0bFN0YXRlLmZ1bmN0aW9uID0gYWRkRnVuY3Rp
b24oCi0gICAgICAgICAgICBtX2Z0bFN0YXRlLm1vZHVsZSwgbmFtZS5kYXRhKCksIGZ1bmN0aW9u
VHlwZShtX291dC5pbnQ2NCwgbV9vdXQuaW50UHRyKSk7CisgICAgICAgICAgICBtX2Z0bFN0YXRl
Lm1vZHVsZSwgbmFtZS5kYXRhKCksIGZ1bmN0aW9uVHlwZShtX291dC5pbnQ2NCkpOwogICAgICAg
ICBzZXRGdW5jdGlvbkNhbGxpbmdDb252KG1fZnRsU3RhdGUuZnVuY3Rpb24sIExMVk1DQ2FsbENv
bnYpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuaW5pdGlhbGl6ZShtX2Z0bFN0YXRlLm1vZHVs
ZSwgbV9mdGxTdGF0ZS5mdW5jdGlvbiwgbV9oZWFwcyk7CiAgICAgICAgIAotICAgICAgICBtX3By
b2xvZ3VlID0gYXBwZW5kQmFzaWNCbG9jayhtX2Z0bFN0YXRlLmNvbnRleHQsIG1fZnRsU3RhdGUu
ZnVuY3Rpb24pOwotICAgICAgICBtX291dC5hcHBlbmRUbyhtX3Byb2xvZ3VlKTsKLSAgICAgICAg
Y3JlYXRlUGhpVmFyaWFibGVzKCk7Ci0gICAgICAgIAotICAgICAgICBtX2NhbGxGcmFtZSA9IG1f
b3V0LnBhcmFtKDApOwotICAgICAgICBtX3RhZ1R5cGVOdW1iZXIgPSBtX291dC5jb25zdEludDY0
KFRhZ1R5cGVOdW1iZXIpOwotICAgICAgICBtX3RhZ01hc2sgPSBtX291dC5jb25zdEludDY0KFRh
Z01hc2spOwotICAgICAgICAKKyAgICAgICAgbV9wcm9sb2d1ZSA9IEZUTF9ORVdfQkxPQ0sobV9v
dXQsICgiUHJvbG9ndWUiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIHN0YWNrT3ZlcmZsb3cgPSBG
VExfTkVXX0JMT0NLKG1fb3V0LCAoIlN0YWNrIG92ZXJmbG93IikpOworCiAgICAgICAgIGZvciAo
QmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tz
KCk7ICsrYmxvY2tJbmRleCkgewogICAgICAgICAgICAgbV9oaWdoQmxvY2sgPSBtX2dyYXBoLmJs
b2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFtX2hpZ2hCbG9jaykKQEAgLTExMiw4
ICsxMTEsMzQgQEAgcHVibGljOgogICAgICAgICAgICAgbV9ibG9ja3MuYWRkKG1faGlnaEJsb2Nr
LCBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkJsb2NrICIsICptX2hpZ2hCbG9jaykpKTsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgbV9vdXQuYXBwZW5kVG8obV9wcm9sb2d1ZSk7Ci0gICAg
ICAgIG1fb3V0Lmp1bXAobG93QmxvY2sobV9ncmFwaC5ibG9jaygwKSkpOworICAgICAgICBtX291
dC5hcHBlbmRUbyhtX3Byb2xvZ3VlLCBzdGFja092ZXJmbG93KTsKKyAgICAgICAgY3JlYXRlUGhp
VmFyaWFibGVzKCk7CisgICAgICAgIExWYWx1ZSBjYXB0dXJlZEFsbG9jYSA9IG1fb3V0LmFsbG9j
YShhcnJheVR5cGUobV9vdXQuaW50NjQsIG1fZ3JhcGgubV9uZXh0TWFjaGluZUxvY2FsKSk7Cisg
ICAgICAgIG1fY2FwdHVyZWQgPSBtX291dC5hZGQoCisgICAgICAgICAgICBtX291dC5wdHJUb0lu
dChjYXB0dXJlZEFsbG9jYSwgbV9vdXQuaW50UHRyKSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0
SW50UHRyKG1fZ3JhcGgubV9uZXh0TWFjaGluZUxvY2FsICogc2l6ZW9mKFJlZ2lzdGVyKSkpOzsK
KyAgICAgICAgCisgICAgICAgIC8vIFdlIHNob3VsZCBub3QgY3JlYXRlIGFueSBhbGxvY2EncyBh
ZnRlciB0aGlzIHBvaW50LCBzaW5jZSB0aGV5IHdpbGwgY2Vhc2UgdG8KKyAgICAgICAgLy8gYmUg
bWVtMnJlZyBjYW5kaWRhdGVzLgorICAgICAgICAKKyAgICAgICAgbV9mdGxTdGF0ZS5jYXB0dXJl
ZFN0YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7CisgICAgICAgIG1fb3V0LmNhbGwoCisgICAg
ICAgICAgICBtX291dC5zdGFja21hcEludHJpbnNpYygpLCBtX291dC5jb25zdEludDMyKG1fZnRs
U3RhdGUuY2FwdHVyZWRTdGFja21hcElEKSwKKyAgICAgICAgICAgIG1fb3V0LmludDMyWmVybywg
Y2FwdHVyZWRBbGxvY2EpOworICAgICAgICAKKyAgICAgICAgbV9jYWxsRnJhbWUgPSBtX291dC5w
dHJUb0ludCgKKyAgICAgICAgICAgIG1fb3V0LmNhbGwobV9vdXQuZnJhbWVBZGRyZXNzSW50cmlu
c2ljKCksIG1fb3V0LmludDMyWmVybyksIG1fb3V0LmludFB0cik7CisgICAgICAgIG1fdGFnVHlw
ZU51bWJlciA9IG1fb3V0LmNvbnN0SW50NjQoVGFnVHlwZU51bWJlcik7CisgICAgICAgIG1fdGFn
TWFzayA9IG1fb3V0LmNvbnN0SW50NjQoVGFnTWFzayk7CisgICAgICAgIAorICAgICAgICBtX291
dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihjb2RlQmxvY2soKSksIGFkZHJlc3NGb3IoSlNT
dGFjazo6Q29kZUJsb2NrKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIG1f
b3V0LmJlbG93KG1fY2FsbEZyYW1lLCBtX291dC5sb2FkUHRyKG1fb3V0LmFic29sdXRlKCZzdGFj
a0xpbWl0KSkpLAorICAgICAgICAgICAgc3RhY2tPdmVyZmxvdywgbG93QmxvY2sobV9ncmFwaC5i
bG9jaygwKSkpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc3RhY2tPdmVyZmxv
dywgbG93QmxvY2sobV9ncmFwaC5ibG9jaygwKSkpOworICAgICAgICAvLyBGSVhNRTogSGFuZGxl
IGV4Y2VwdGlvbnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM2
MjIKKyAgICAgICAgbV9vdXQuY3Jhc2goKTsKICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxCYXNp
Y0Jsb2NrKj4gZGVwdGhGaXJzdDsKICAgICAgICAgbV9ncmFwaC5nZXRCbG9ja3NJbkRlcHRoRmly
c3RPcmRlcihkZXB0aEZpcnN0KTsKQEAgLTEyNzAsNyArMTI5NSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIExWYWx1ZSBjYWxsID0gbV9vdXQuY2FsbCgKICAgICAgICAgICAgIG1fb3V0LnBhdGNocG9p
bnRJbnQ2NEludHJpbnNpYygpLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihzdGFja21h
cElEKSwgbV9vdXQuY29uc3RJbnQzMihzaXplT2ZHZXRCeUlkKCkpLAotICAgICAgICAgICAgY29u
c3ROdWxsKG1fb3V0LnJlZjgpLCBtX291dC5jb25zdEludDMyKDIpLCBtX2NhbGxGcmFtZSwgYmFz
ZSk7CisgICAgICAgICAgICBjb25zdE51bGwobV9vdXQucmVmOCksIG1fb3V0LmNvbnN0SW50MzIo
MSksIGJhc2UpOwogICAgICAgICBzZXRJbnN0cnVjdGlvbkNhbGxpbmdDb252ZW50aW9uKGNhbGws
IExMVk1BbnlSZWdDYWxsQ29udik7CiAgICAgICAgIHNldEpTVmFsdWUoY2FsbCk7CiAgICAgICAg
IApAQCAtMTI5NSw3ICsxMzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIGNhbGwgPSBt
X291dC5jYWxsKAogICAgICAgICAgICAgbV9vdXQucGF0Y2hwb2ludFZvaWRJbnRyaW5zaWMoKSwK
ICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoc3RhY2ttYXBJRCksIG1fb3V0LmNvbnN0SW50
MzIoc2l6ZU9mUHV0QnlJZCgpKSwKLSAgICAgICAgICAgIGNvbnN0TnVsbChtX291dC5yZWY4KSwg
bV9vdXQuY29uc3RJbnQzMigzKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHZhbHVlKTsKKyAgICAgICAg
ICAgIGNvbnN0TnVsbChtX291dC5yZWY4KSwgbV9vdXQuY29uc3RJbnQzMigyKSwgYmFzZSwgdmFs
dWUpOwogICAgICAgICBzZXRJbnN0cnVjdGlvbkNhbGxpbmdDb252ZW50aW9uKGNhbGwsIExMVk1B
bnlSZWdDYWxsQ29udik7CiAgICAgICAgIAogICAgICAgICBtX2Z0bFN0YXRlLnB1dEJ5SWRzLmFw
cGVuZChQdXRCeUlkRGVzY3JpcHRvcigKQEAgLTQwMDMsNyArNDAyOCw2IEBAIHByaXZhdGU6CiAg
ICAgICAgIE9TUkV4aXQmIGV4aXQsIEV4aXRBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgRm9ybWF0
dGVkVmFsdWUgbG93VmFsdWUsCiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbikKICAgICB7
Ci0gICAgICAgIGFyZ3VtZW50cy5hcHBlbmQobV9jYWxsRnJhbWUpOwogICAgICAgICBpZiAoISFs
b3dWYWx1ZSkKICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQobG93VmFsdWUudmFsdWUoKSk7
CiAgICAgICAgIApAQCAtNDI2MCwzNSArNDI4NCwzNyBAQCBwcml2YXRlOgogICAgIH0KICAgICBU
eXBlZFBvaW50ZXIgcGF5bG9hZEZvcihMVmFsdWUgYmFzZSwgaW50IG9wZXJhbmQpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRkcmVzc0ZvcihiYXNlLCBvcGVyYW5kLCBPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKKyAgICAgICAgcmV0dXJu
IGFkZHJlc3NGb3IoYmFzZSwgb3BlcmFuZCwgUGF5bG9hZE9mZnNldCk7CiAgICAgfQogICAgIFR5
cGVkUG9pbnRlciB0YWdGb3IoTFZhbHVlIGJhc2UsIGludCBvcGVyYW5kKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkZHJlc3NGb3IoYmFzZSwgb3BlcmFuZCwgT0JKRUNUX09GRlNFVE9GKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKKyAgICAgICAgcmV0dXJuIGFkZHJlc3NG
b3IoYmFzZSwgb3BlcmFuZCwgVGFnT2Zmc2V0KTsKICAgICB9Ci0gICAgVHlwZWRQb2ludGVyIGFk
ZHJlc3NGb3IoaW50IG9wZXJhbmQpCisgICAgVHlwZWRQb2ludGVyIGFkZHJlc3NGb3IoaW50IG9w
ZXJhbmQsIHB0cmRpZmZfdCBvZmZzZXQgPSAwKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkZHJl
c3NGb3IobV9jYWxsRnJhbWUsIG9wZXJhbmQpOworICAgICAgICByZXR1cm4gYWRkcmVzc0ZvcihW
aXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCksIG9mZnNldCk7CiAgICAgfQotICAgIFR5cGVkUG9pbnRl
ciBhZGRyZXNzRm9yKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQorICAgIFR5cGVkUG9pbnRlciBh
ZGRyZXNzRm9yKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBwdHJkaWZmX3Qgb2Zmc2V0ID0gMCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZGRyZXNzRm9yKG1fY2FsbEZyYW1lLCBvcGVyYW5kLm9m
ZnNldCgpKTsKKyAgICAgICAgaWYgKG9wZXJhbmQuaXNMb2NhbCgpKQorICAgICAgICAgICAgcmV0
dXJuIGFkZHJlc3NGb3IobV9jYXB0dXJlZCwgb3BlcmFuZC5vZmZzZXQoKSwgb2Zmc2V0KTsKKyAg
ICAgICAgcmV0dXJuIGFkZHJlc3NGb3IobV9jYWxsRnJhbWUsIG9wZXJhbmQub2Zmc2V0KCksIG9m
ZnNldCk7CiAgICAgfQogICAgIFR5cGVkUG9pbnRlciBwYXlsb2FkRm9yKGludCBvcGVyYW5kKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHBheWxvYWRGb3IobV9jYWxsRnJhbWUsIG9wZXJhbmQpOwor
ICAgICAgICByZXR1cm4gcGF5bG9hZEZvcihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkpOwogICAg
IH0KICAgICBUeXBlZFBvaW50ZXIgcGF5bG9hZEZvcihWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBwYXlsb2FkRm9yKG1fY2FsbEZyYW1lLCBvcGVyYW5kLm9m
ZnNldCgpKTsKKyAgICAgICAgcmV0dXJuIGFkZHJlc3NGb3Iob3BlcmFuZCwgUGF5bG9hZE9mZnNl
dCk7CiAgICAgfQogICAgIFR5cGVkUG9pbnRlciB0YWdGb3IoaW50IG9wZXJhbmQpCiAgICAgewot
ICAgICAgICByZXR1cm4gdGFnRm9yKG1fY2FsbEZyYW1lLCBvcGVyYW5kKTsKKyAgICAgICAgcmV0
dXJuIHRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkpOwogICAgIH0KICAgICBUeXBlZFBv
aW50ZXIgdGFnRm9yKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHRhZ0ZvcihtX2NhbGxGcmFtZSwgb3BlcmFuZC5vZmZzZXQoKSk7CisgICAgICAgIHJldHVy
biBhZGRyZXNzRm9yKG9wZXJhbmQsIFRhZ09mZnNldCk7CiAgICAgfQogICAgIAogICAgIFZNJiB2
bSgpIHsgcmV0dXJuIG1fZ3JhcGgubV92bTsgfQpAQCAtNDMwMyw2ICs0MzI5LDcgQEAgcHJpdmF0
ZToKICAgICBIYXNoTWFwPEJhc2ljQmxvY2sqLCBMQmFzaWNCbG9jaz4gbV9ibG9ja3M7CiAgICAg
CiAgICAgTFZhbHVlIG1fY2FsbEZyYW1lOworICAgIExWYWx1ZSBtX2NhcHR1cmVkOwogICAgIExW
YWx1ZSBtX3RhZ1R5cGVOdW1iZXI7CiAgICAgTFZhbHVlIG1fdGFnTWFzazsKICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJ
KHJldmlzaW9uIDE2MDU4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksMTMgKzc5LDEyIEBAIHN0YXRpYyB2
b2lkIGNvbXBpbGVTdHViKAogICAgIAogICAgIC8vIEdldCB0aGUgY2FsbCBmcmFtZSBhbmQgdGFn
IHRoaW5naWVzLgogICAgIC8vIFJlc3RvcmUgdGhlIGV4aXRpbmcgZnVuY3Rpb24ncyBjYWxsRnJh
bWUgdmFsdWUgaW50byBhIHJlZ1Q0Ci0gICAgcmVjb3JkLT5sb2NhdGlvbnNbMF0ucmVzdG9yZUlu
dG8oaml0LCBqaXRDb2RlLT5zdGFja21hcHMsIHJlZ2lzdGVyU2NyYXRjaCwgR1BSSW5mbzo6cmVn
VDQpOwogICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoVGFnVHlwZU51
bWJlciksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CiAgICAgaml0Lm1vdmUoTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChUYWdNYXNrKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lz
dGVyKTsKICAgICAKICAgICAvLyBEbyBzb21lIHZhbHVlIHByb2ZpbGluZy4KICAgICBpZiAoZXhp
dC5tX3Byb2ZpbGVWYWx1ZUZvcm1hdCAhPSBJbnZhbGlkVmFsdWVGb3JtYXQpIHsKLSAgICAgICAg
cmVjb3JkLT5sb2NhdGlvbnNbMV0ucmVzdG9yZUludG8oaml0LCBqaXRDb2RlLT5zdGFja21hcHMs
IHJlZ2lzdGVyU2NyYXRjaCwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICByZWNvcmQtPmxvY2F0
aW9uc1swXS5yZXN0b3JlSW50byhqaXQsIGppdENvZGUtPnN0YWNrbWFwcywgcmVnaXN0ZXJTY3Jh
dGNoLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIHJlYm94QWNjb3JkaW5nVG9Gb3JtYXQoCiAg
ICAgICAgICAgICBleGl0Lm1fcHJvZmlsZVZhbHVlRm9ybWF0LCBqaXQsIEdQUkluZm86OnJlZ1Qw
LCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOwogICAgICAgICAKQEAgLTEyOSw3ICsx
MjgsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAgICAgY2FzZSBFeGl0VmFsdWVJ
bkpTU3RhY2tBc0ludDMyOgogICAgICAgICBjYXNlIEV4aXRWYWx1ZUluSlNTdGFja0FzSW50NTI6
CiAgICAgICAgIGNhc2UgRXhpdFZhbHVlSW5KU1N0YWNrQXNEb3VibGU6Ci0gICAgICAgICAgICBq
aXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcih2YWx1ZS52aXJ0dWFsUmVnaXN0
ZXIoKSwgR1BSSW5mbzo6cmVnVDQpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQu
bG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcih2YWx1ZS52aXJ0dWFsUmVnaXN0ZXIo
KSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAg
ICAgICAgIGRlZmF1bHQ6CkBAIC0xNDksMTkgKzE0OCw5IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVT
dHViKAogICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDAp
OwogICAgICAgICByZWJveEFjY29yZGluZ1RvRm9ybWF0KAogICAgICAgICAgICAgdmFsdWUudmFs
dWVGb3JtYXQoKSwgaml0LCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86
OnJlZ1QyKTsKLSAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVs
cGVyczo6YWRkcmVzc0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpLCBH
UFJJbmZvOjpyZWdUNCkpOworICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNz
ZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3Bl
cmFuZCkpKTsKICAgICB9CiAgICAgCi0gICAgLy8gUmVzdG9yZSB0aGUgb2xkIHN0YWNrIHBvaW50
ZXIgYW5kIHRoZW4gcHV0IHJlZ1Q0IGludG8gY2FsbEZyYW1lUmVnaXN0ZXIuIFRoZSBpZGVhIGlz
Ci0gICAgLy8gdGhhdCB0aGUgRlRMIGNhbGwgZnJhbWUgaXMgcHVzaGVkIG9udG8gdGhlIEpTIGNh
bGwgZnJhbWUgYW5kIHdlIGNhbiByZWNvdmVyIHRoZSBvbGQKLSAgICAvLyB2YWx1ZSBvZiB0aGUg
c3RhY2sgcG9pbnRlciBieSBwb3BwaW5nIHRoZSBGVEwgY2FsbCBmcmFtZS4gV2UgYWxyZWFkeSBr
bm93IHdoYXQgdGhlCi0gICAgLy8gZnJhbWUgcG9pbnRlciBpbiB0aGUgSlMgY2FsbCBmcmFtZSB3
YXMgYmVjYXVzZSBpdCB3b3VsZCBoYXZlIGJlZW4gcGFzc2VkIGFzIGFuIGFyZ3VtZW50Ci0gICAg
Ly8gdG8gdGhlIEZUTCBjYWxsIGZyYW1lLgotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpm
cmFtZVBvaW50ZXJSZWdpc3RlciwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKLSAgICBqaXQucG9wKEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgIGppdC5wb3AoR1BSSW5m
bzo6bm9uQXJnR1BSMCk7Ci0gICAgaml0Lm1vdmUoR1BSSW5mbzo6cmVnVDQsIEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAKICAgICBoYW5kbGVFeGl0Q291bnRzKGppdCwgZXhpdCk7
CiAgICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhqaXQsIGV4aXQpOwogICAgIGFkanVzdEFuZEp1
bXBUb1RhcmdldChqaXQsIGV4aXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPdXRwdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91
dHB1dC5oCShyZXZpc2lvbiAxNjA1ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE91dHB1dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNiArMjEwLDcgQEAgcHVibGljOgogICAg
IExWYWx1ZSBjYXN0VG9JbnQzMihMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIGludENhc3QodmFsdWUs
IGludDMyKTsgfQogICAgIExWYWx1ZSBmcENhc3QoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7
IHJldHVybiBidWlsZEZQQ2FzdChtX2J1aWxkZXIsIHZhbHVlLCB0eXBlKTsgfQogICAgIExWYWx1
ZSBpbnRUb1B0cihMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpIHsgcmV0dXJuIGJ1aWxkSW50VG9Q
dHIobV9idWlsZGVyLCB2YWx1ZSwgdHlwZSk7IH0KKyAgICBMVmFsdWUgcHRyVG9JbnQoTFZhbHVl
IHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBidWlsZFB0clRvSW50KG1fYnVpbGRlciwgdmFs
dWUsIHR5cGUpOyB9CiAgICAgTFZhbHVlIGJpdENhc3QoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBl
KSB7IHJldHVybiBidWlsZEJpdENhc3QobV9idWlsZGVyLCB2YWx1ZSwgdHlwZSk7IH0KICAgICAK
ICAgICBMVmFsdWUgYWxsb2NhKExUeXBlIHR5cGUpIHsgcmV0dXJuIGJ1aWxkQWxsb2NhKG1fYnVp
bGRlciwgdHlwZSk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1Bh
dGhDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNs
b3dQYXRoQ2FsbC5jcHAJKHJldmlzaW9uIDE2MDU4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDEzICsxNTgs
MTMgQEAgcHJpdmF0ZToKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCiBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKAotICAgIFN0YXRlJiBzdGF0ZSwgY29uc3QgUmVnaXN0ZXJT
ZXQmIHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCAKLSAgICBKX0pJVE9wZXJhdGlv
bl9FU3NpSkkgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0
ZXIsCi0gICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgb2JqZWN0LCBTdHJp
bmdJbXBsKiB1aWQpCisgICAgU3RhdGUmIHN0YXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsCisgICAgSl9KSVRPcGVyYXRpb25fRVNzaUpJIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJS
ZWcgb2JqZWN0LAorICAgIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBDYWxsQ29udGV4dCBjb250
ZXh0KHN0YXRlLCB1c2VkUmVnaXN0ZXJzLCBqaXQsIDQsIHJlc3VsdCk7Ci0gICAgaml0LnNldHVw
QXJndW1lbnRzKAotICAgICAgICBjYWxsRnJhbWVSZWdpc3RlciwgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKHN0dWJJbmZvKSwgb2JqZWN0LAorICAgIGppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoCisgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHViSW5mbyks
IG9iamVjdCwKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHVpZCkpOwogICAg
IHJldHVybiBjb250ZXh0Lm1ha2VDYWxsKGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uKSk7
CiAgICAgLy8gRklYTUU6IEZUTCBzaG91bGQgc3VwcG9ydCBleGNlcHRpb25zLgpAQCAtMTczLDEy
ICsxNzMsMTIgQEAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbigKIAogTWFjcm9B
c3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbigKICAgICBTdGF0ZSYgc3RhdGUsIGNvbnN0IFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwgCi0gICAgVl9KSVRP
cGVyYXRpb25fRVNzaUpKSSBvcGVyYXRpb24sIEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciwKLSAg
ICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIG9iamVj
dCwgU3RyaW5nSW1wbCogdWlkKQorICAgIFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgb3BlcmF0aW9u
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIG9iamVj
dCwKKyAgICBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgQ2FsbENvbnRleHQgY29udGV4dChzdGF0
ZSwgdXNlZFJlZ2lzdGVycywgaml0LCA1LCBJbnZhbGlkR1BSUmVnKTsKLSAgICBqaXQuc2V0dXBB
cmd1bWVudHMoCi0gICAgICAgIGNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoc3R1YkluZm8pLCB2YWx1ZSwgb2JqZWN0LAorICAgIGppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoCisgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHVi
SW5mbyksIHZhbHVlLCBvYmplY3QsCiAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cih1aWQpKTsKICAgICByZXR1cm4gY29udGV4dC5tYWtlQ2FsbChiaXR3aXNlX2Nhc3Q8dm9pZCo+
KG9wZXJhdGlvbikpOwogICAgIC8vIEZJWE1FOiBGVEwgc2hvdWxkIHN1cHBvcnQgZXhjZXB0aW9u
cy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuaAko
cmV2aXNpb24gMTYwNTg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0
aENhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTIgKzU3LDEwIEBAIHByaXZhdGU6CiAKIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oCiAgICAgU3RhdGUmLCBjb25zdCBSZWdp
c3RlclNldCYsIENDYWxsSGVscGVycyYsIEpfSklUT3BlcmF0aW9uX0VTc2lKSSwKLSAgICBHUFJS
ZWcgcmVzdWx0LCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIsIFN0cnVjdHVyZVN0dWJJbmZvKiwg
R1BSUmVnIG9iamVjdCwKLSAgICBTdHJpbmdJbXBsKiB1aWQpOworICAgIEdQUlJlZyByZXN1bHQs
IFN0cnVjdHVyZVN0dWJJbmZvKiwgR1BSUmVnIG9iamVjdCwgU3RyaW5nSW1wbCogdWlkKTsKIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oCiAgICAgU3RhdGUmLCBjb25zdCBSZWdp
c3RlclNldCYsIENDYWxsSGVscGVycyYsIFZfSklUT3BlcmF0aW9uX0VTc2lKSkksCi0gICAgR1BS
UmVnIGNhbGxGcmFtZVJlZ2lzdGVyLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEdQUlJlZyB2YWx1ZSwg
R1BSUmVnIG9iamVjdCwKLSAgICBTdHJpbmdJbXBsKiB1aWQpOworICAgIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgb2JqZWN0LCBTdHJpbmdJbXBsKiB1aWQpOwogCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFN0YXRlLmgJKHJldmlzaW9uIDE2MDU4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAg
UmVmUHRyPEpJVENvZGU+IGppdENvZGU7CiAgICAgR2VuZXJhdGVkRnVuY3Rpb24gZ2VuZXJhdGVk
RnVuY3Rpb247CiAgICAgSklURmluYWxpemVyKiBmaW5hbGl6ZXI7CisgICAgdW5zaWduZWQgY2Fw
dHVyZWRTdGFja21hcElEOwogICAgIFNlZ21lbnRlZFZlY3RvcjxHZXRCeUlkRGVzY3JpcHRvcj4g
Z2V0QnlJZHM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFB1dEJ5SWREZXNjcmlwdG9yPiBwdXRCeUlk
czsKICAgICBWZWN0b3I8Q1N0cmluZz4gY29kZVNlY3Rpb25OYW1lczsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAJKHJldmlzaW9uIDE2MDU4NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzks
OSArMzksOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBERkc7CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblRodW5r
R2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgTG9jYXRpb24mIGxvY2F0aW9uKQorTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAg
IEFzc2VtYmx5SGVscGVycyBqaXQoJnZtLCAwKTsKKyAgICBBc3NlbWJseUhlbHBlcnMgaml0KHZt
LCAwKTsKICAgICAKICAgICAvLyBOb3RlIHRoYXQgdGhlICJyZXR1cm4gYWRkcmVzcyIgd2lsbCBi
ZSB0aGUgT1NSIGV4aXQgSUQuCiAgICAgCkBAIC01MSw3ICs1MSw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblQKICAgICBqaXQucHVzaChHUFJJbmZvOjpyZWdUMCk7
CiAgICAgaml0LnB1c2goR1BSSW5mbzo6cmVnVDApOwogICAgIAotICAgIFNjcmF0Y2hCdWZmZXIq
IHNjcmF0Y2hCdWZmZXIgPSB2bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShyZXF1aXJlZFNjcmF0Y2hN
ZW1vcnlTaXplSW5CeXRlcygpKTsKKyAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0g
dm0tPnNjcmF0Y2hCdWZmZXJGb3JTaXplKHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVz
KCkpOwogICAgIGNoYXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PGNoYXIqPihzY3JhdGNoQnVmZmVy
LT5kYXRhQnVmZmVyKCkpOwogICAgIAogICAgIHNhdmVBbGxSZWdpc3RlcnMoaml0LCBidWZmZXIp
OwpAQCAtNjAsNyArNjAsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdEdlbmVyYXRp
b25UCiAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1
ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpLCBHUFJJbmZvOjpub25BcmdHUFIxKTsKICAgICBqaXQu
c3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocmVxdWlyZWRTY3JhdGNoTWVt
b3J5U2l6ZUluQnl0ZXMoKSksIEdQUkluZm86Om5vbkFyZ0dQUjEpOwogCi0gICAgbG9jYXRpb24u
cmVzdG9yZUludG8oaml0LCBidWZmZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCwgMSk7CisgICAg
aml0LmxvYWRQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CiAgICAgaml0LnBlZWsoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCAzKTsKICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2FsbCgpOwogICAgIApAQCAtODgs
OSArODgsOSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdEdlbmVyYXRpb25UCiAKICAg
ICBqaXQucmV0KCk7CiAgICAgCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcih2bSwgJmppdCwg
R0xPQkFMX1RIVU5LX0lEKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJmppdCwg
R0xPQkFMX1RIVU5LX0lEKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGZ1bmN0aW9uQ2FsbCwgY29t
cGlsZUZUTE9TUkV4aXQpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAo
IkZUTCBPU1IgZXhpdCBnZW5lcmF0aW9uIHRodW5rIGZvciBjYWxsRnJhbWUgYXQgJXMiLCB0b0NT
dHJpbmcobG9jYXRpb24pLmRhdGEoKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCAoIkZUTCBPU1IgZXhpdCBnZW5lcmF0aW9uIHRodW5rIikpOwogfQogCiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBT
bG93UGF0aENhbGxLZXkmIGtleSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VGh1bmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVu
a3MuaAkocmV2aXNpb24gMTYwNTg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExU
aHVua3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBWTTsKIAogbmFt
ZXNwYWNlIEZUTCB7CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblRo
dW5rR2VuZXJhdG9yKFZNJiwgY29uc3QgTG9jYXRpb24mKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IoVk0mLCBjb25zdCBTbG93UGF0aENhbGxL
ZXkmKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZUFyZ3VtZW50PgpAQCAtNzgsMTIgKzc4
LDYgQEAgdHlwZW5hbWUgTWFwVHlwZTo6S2V5VHlwZSBrZXlGb3JUaHVuayhNYQogCiBjbGFzcyBU
aHVua3MgewogcHVibGljOgotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZXRPU1JFeGl0R2Vu
ZXJhdGlvblRodW5rKFZNJiB2bSwgY29uc3QgTG9jYXRpb24mIGxvY2F0aW9uKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGdlbmVyYXRlSWZOZWNlc3NhcnkoCi0gICAgICAgICAgICB2bSwgbV9vc3JF
eGl0VGh1bmtzLCBsb2NhdGlvbiwgb3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik7Ci0g
ICAgfQotICAgIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZXRTbG93UGF0aENhbGxUaHVu
ayhWTSYgdm0sIGNvbnN0IFNsb3dQYXRoQ2FsbEtleSYga2V5KQogICAgIHsKICAgICAgICAgcmV0
dXJuIGdlbmVyYXRlSWZOZWNlc3NhcnkoCkBAIC05Niw3ICs5MCw2IEBAIHB1YmxpYzoKICAgICB9
CiAgICAgCiBwcml2YXRlOgotICAgIFRodW5rTWFwPExvY2F0aW9uPiBtX29zckV4aXRUaHVua3M7
CiAgICAgVGh1bmtNYXA8U2xvd1BhdGhDYWxsS2V5PiBtX3Nsb3dQYXRoQ2FsbFRodW5rczsKIH07
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxNjA1ODUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODcxLDEwICs4NzEsMTAgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVw
VG9nZwogCiBib29sIEhlYXA6OmNvbGxlY3RJZk5lY2Vzc2FyeU9yRGVmZXIoKQogewotICAgIGlm
IChtX2RlZmVycmFsRGVwdGgpCisgICAgaWYgKGlzRGVmZXJyZWQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIAotICAgIGlmICghc2hvdWxkQ29sbGVjdCgpKQorICAgIGlmIChPcHRpb25z
OjpkaXNhYmxlR0MoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGNvbGxlY3Qo
RG9Ob3RTd2VlcCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAx
NjA1ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE4NCw3ICsxODQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAg
IHZvaWQgYWRkUmVmZXJlbmNlKEpTQ2VsbCosIEFycmF5QnVmZmVyKik7CiAgICAgICAgIAotICAg
ICAgICBib29sIGlzRGVmZXJyZWQoKSBjb25zdCB7IHJldHVybiAhIW1fZGVmZXJyYWxEZXB0aDsg
fQorICAgICAgICBib29sIGlzRGVmZXJyZWQoKSBjb25zdCB7IHJldHVybiAhIW1fZGVmZXJyYWxE
ZXB0aCB8fCBPcHRpb25zOjpkaXNhYmxlR0MoKTsgfQogCiAjaWYgVVNFKENGKQogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHJlbGVhc2VTb29uKFJldGFpblB0cjxUPiYmKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNp
b24gMTYwNTg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDcgKzIxNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
QWRkcmVzcyB0YWdGb3IoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKICAgICB7CiAg
ICAgICAgIEFTU0VSVCh2aXJ0dWFsUmVnaXN0ZXIuaXNWYWxpZCgpKTsKLSAgICAgICAgcmV0dXJu
IEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHZpcnR1YWxSZWdpc3Rlci5vZmZz
ZXQoKSAqIHNpemVvZihSZWdpc3RlcikgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnRhZykpOworICAgICAgICByZXR1cm4gQWRkcmVzcyhHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgdmlydHVhbFJlZ2lzdGVyLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lz
dGVyKSArIFRhZ09mZnNldCk7CiAgICAgfQogICAgIHN0YXRpYyBBZGRyZXNzIHRhZ0ZvcihpbnQg
b3BlcmFuZCkKICAgICB7CkBAIC0yMjYsNyArMjI2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBB
ZGRyZXNzIHBheWxvYWRGb3IoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKICAgICB7
CiAgICAgICAgIEFTU0VSVCh2aXJ0dWFsUmVnaXN0ZXIuaXNWYWxpZCgpKTsKLSAgICAgICAgcmV0
dXJuIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHZpcnR1YWxSZWdpc3Rlci5v
ZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKKyAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKSAqIHNpemVv
ZihSZWdpc3RlcikgKyBQYXlsb2FkT2Zmc2V0KTsKICAgICB9CiAgICAgc3RhdGljIEFkZHJlc3Mg
cGF5bG9hZEZvcihpbnQgb3BlcmFuZCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24g
MTYwNTg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3I6OkpJVElubGluZUNhY2hlRwogCiBKSVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlkR2Vu
ZXJhdG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAgIEdQUlJlZyBjYWxsRnJhbWVS
ZWdpc3RlciwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIGJvb2wgcmVnaXN0
ZXJzRmx1c2hlZCkKKyAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgYm9v
bCByZWdpc3RlcnNGbHVzaGVkKQogICAgIDogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IoY29kZUJs
b2NrLCBjb2RlT3JpZ2luKQogICAgICwgbV9iYXNlKGJhc2UpCiAgICAgLCBtX3ZhbHVlKHZhbHVl
KQpAQCAtNjIsNyArNjIsNiBAQCBKSVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKAog
ICAgIG1fc3R1YkluZm8tPnBhdGNoLnVzZWRSZWdpc3RlcnMuc2V0KGJhc2UpOwogICAgIG1fc3R1
YkluZm8tPnBhdGNoLnVzZWRSZWdpc3RlcnMuc2V0KHZhbHVlKTsKICAgICAKLSAgICBtX3N0dWJJ
bmZvLT5wYXRjaC5jYWxsRnJhbWVSZWdpc3RlciA9IHN0YXRpY19jYXN0PGludDhfdD4oY2FsbEZy
YW1lUmVnaXN0ZXIpOwogICAgIG1fc3R1YkluZm8tPnBhdGNoLmJhc2VHUFIgPSBzdGF0aWNfY2Fz
dDxpbnQ4X3Q+KGJhc2UucGF5bG9hZEdQUigpKTsKICAgICBtX3N0dWJJbmZvLT5wYXRjaC52YWx1
ZUdQUiA9IHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUucGF5bG9hZEdQUigpKTsKICNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQpAQCAtMTMwLDExICsxMjksOSBAQCB2b2lkIEpJVEdldEJ5SWRHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhCiAKIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5l
cmF0b3IoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgR1BSUmVnIGNhbGxGcmFtZVJl
Z2lzdGVyLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0
Y2gsCi0gICAgYm9vbCByZWdpc3RlcnNGbHVzaGVkLCBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2lu
ZCBwdXRLaW5kKQotICAgIDogSklUQnlJZEdlbmVyYXRvcigKLSAgICAgICAgY29kZUJsb2NrLCBj
b2RlT3JpZ2luLCB1c2VkUmVnaXN0ZXJzLCBjYWxsRnJhbWVSZWdpc3RlciwgYmFzZSwgdmFsdWUs
Ci0gICAgICAgIHJlZ2lzdGVyc0ZsdXNoZWQpCisgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBib29sIHJlZ2lzdGVyc0ZsdXNoZWQsCisgICAg
RUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCkKKyAgICA6IEpJVEJ5SWRHZW5lcmF0
b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwgcmVn
aXN0ZXJzRmx1c2hlZCkKICAgICAsIG1fc2NyYXRjaChzY3JhdGNoKQogICAgICwgbV9lY21hTW9k
ZShlY21hTW9kZSkKICAgICAsIG1fcHV0S2luZChwdXRLaW5kKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAkocmV2aXNp
b24gMTYwNTg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw4ICs1Niw4IEBAIHByb3RlY3RlZDoKICAg
ICBKSVRCeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRCeUlkR2VuZXJhdG9yKAotICAgICAg
ICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBSZWdpc3RlclNldCYsIEdQUlJlZyBjYWxs
RnJhbWVSZWdpc3RlciwKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFs
dWUsIGJvb2wgcmVnaXN0ZXJzRmx1c2hlZCk7CisgICAgICAgIENvZGVCbG9jayosIENvZGVPcmln
aW4sIGNvbnN0IFJlZ2lzdGVyU2V0JiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFs
dWUsCisgICAgICAgIGJvb2wgcmVnaXN0ZXJzRmx1c2hlZCk7CiAgICAgCiBwdWJsaWM6CiAgICAg
dm9pZCByZXBvcnRTbG93UGF0aENhbGwoTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHNsb3dQYXRoQmVn
aW4sIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwpCkBAIC05NiwxMSArOTYsOCBAQCBwdWJsaWM6
CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yKAogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywKLSAgICAgICAgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyLCBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyB2YWx1ZSwKLSAgICAgICAgYm9vbCByZWdpc3RlcnNGbHVzaGVkKQotICAgICAg
ICA6IEpJVEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgICAgICBjb2RlQmxvY2ssIGNvZGVPcmlnaW4s
IHVzZWRSZWdpc3RlcnMsIGNhbGxGcmFtZVJlZ2lzdGVyLCBiYXNlLCB2YWx1ZSwKLSAgICAgICAg
ICAgIHJlZ2lzdGVyc0ZsdXNoZWQpCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVS
ZWdzIHZhbHVlLCBib29sIHJlZ2lzdGVyc0ZsdXNoZWQpCisgICAgICAgIDogSklUQnlJZEdlbmVy
YXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBy
ZWdpc3RlcnNGbHVzaGVkKQogICAgIHsKICAgICB9CiAgICAgCkBAIC0xMTIsOSArMTA5LDggQEAg
cHVibGljOgogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVFB1dEJ5SWRH
ZW5lcmF0b3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIsCi0gICAgICAgIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgYm9vbCBy
ZWdpc3RlcnNGbHVzaGVkLAotICAgICAgICBFQ01BTW9kZSwgUHV0S2luZCk7CisgICAgICAgIENv
ZGVCbG9jayosIENvZGVPcmlnaW4sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBK
U1ZhbHVlUmVncyBiYXNlLAorICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0
Y2gsIGJvb2wgcmVnaXN0ZXJzRmx1c2hlZCwgRUNNQU1vZGUsIFB1dEtpbmQpOwogICAgIAogICAg
IHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlz
aW9uIDE2MDU4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKgogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4o
CiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCBSZWdp
c3RlclNldDo6c3BlY2lhbFJlZ2lzdGVycygpLAotICAgICAgICBjYWxsRnJhbWVSZWdpc3Rlciwg
SlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIHRydWUpOworICAgICAgICBK
U1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgdHJ1ZSk7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKQEAgLTU2NSw4ICs1NjUsOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAKICAgICBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9m
ZnNldCksIFJlZ2lzdGVyU2V0OjpzcGVjaWFsUmVnaXN0ZXJzKCksCi0gICAgICAgIGNhbGxGcmFt
ZVJlZ2lzdGVyLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIs
IHRydWUsCi0gICAgICAgIG1fY29kZUJsb2NrLT5lY21hTW9kZSgpLCBkaXJlY3QgPyBEaXJlY3Qg
OiBOb3REaXJlY3QpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJl
Z1QxKSwgcmVnVDIsIHRydWUsIG1fY29kZUJsb2NrLT5lY21hTW9kZSgpLAorICAgICAgICBkaXJl
Y3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNjA1ODUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nywx
MSArNDcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIHRoYXQgd291bGQgb3JkaW5hcmlseSBoYXZl
IHdlbGwta25vd24gdmFsdWVzOgogLy8gLSB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIKIC8vIC0gdGFn
TWFza1JlZ2lzdGVyCi0vLyAtIGNhbGxGcmFtZVJlZ2lzdGVyICoqCi0vLwotLy8gV2UgY3VycmVu
dGx5IG9ubHkgdXNlIHRoZSBjYWxsRnJhbWVSZWdpc3RlciBmb3IgY2xvc3VyZSBjYWxsIHBhdGNo
aW5nLCBhbmQgd2UncmUgbm90IGdvaW5nIHRvCi0vLyBnaXZlIHRoZSBGVEwgY2xvc3VyZSBjYWxs
IHBhdGNoaW5nIHN1cHBvcnQgdW50aWwgd2Ugc3dpdGNoIHRvIHRoZSBDIHN0YWNrIC0gYnV0IHdo
ZW4gd2UgZG8gdGhhdCwKLS8vIGNhbGxGcmFtZVJlZ2lzdGVyIHdpbGwgZGlzYXBwZWFyLgogCiBz
dGF0aWMgRnVuY3Rpb25QdHIgcmVhZENhbGxUYXJnZXQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1
ZmZlciwgQ29kZUxvY2F0aW9uQ2FsbCBjYWxsKQogewpAQCAtNDk1LDcgKzQ5MCw2IEBAIHN0YXRp
YyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICAgICAgCiAgICAgICAgIHN0
dWJJbmZvLnUuZ2V0QnlJZFNlbGZMaXN0Lmxpc3RTaXplKys7CiAgICAgICAgIAotICAgICAgICBH
UFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBh
dGNoLmNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBzdGF0aWNf
Y2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmJhc2VHUFIpOwogI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCiAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0
dWJJbmZvLnBhdGNoLnZhbHVlVGFnR1BSKTsKQEAgLTUxOSw2ICs1MTMsMTAgQEAgc3RhdGljIGJv
b2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBzdWNjZXNzOwogICAgICAgICAKICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVHZXR0
ZXIoKSB8fCBzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIGNvZGUgc2hvdWxkbid0IGJlIGFzc3VtaW5nIHRoYXQgdGhlIHRvcCBvZiBzdGFjayBp
cyBzZXQgdXAgZm9yIEpTQworICAgICAgICAgICAgLy8gSklULXN0eWxlIEMgY2FsbHMsIHNpbmNl
IHdlIG1heSBiZSBjdXJyZW50bHkgb24gdG9wIG9mIGFuIEZUTCBmcmFtZS4KKyAgICAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU3MTEKKyAgICAg
ICAgICAgIAogICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVHZXR0ZXIoKSkgewogICAg
ICAgICAgICAgICAgIEFTU0VSVChzY3JhdGNoR1BSICE9IEludmFsaWRHUFJSZWcpOwogICAgICAg
ICAgICAgICAgIEFTU0VSVChiYXNlR1BSICE9IHNjcmF0Y2hHUFIpOwpAQCAtNTM2LDExICs1MzQs
MTEgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAogICAgICAgICAg
ICAgICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNo
R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShzbG90LmNhY2hlZE9mZnNldCgpKSksIHNjcmF0Y2hH
UFIpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0dWJKaXQu
c2V0dXBBcmd1bWVudHMoY2FsbEZyYW1lUmVnaXN0ZXIsIGJhc2VHUFIsIHNjcmF0Y2hHUFIpOwor
ICAgICAgICAgICAgICAgIHN0dWJKaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGJhc2VH
UFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgIG9wZXJhdGlvbkZ1bmN0aW9uID0gb3Bl
cmF0aW9uQ2FsbEdldHRlcjsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
c3R1YkppdC5zZXR1cEFyZ3VtZW50cygKLSAgICAgICAgICAgICAgICAgICAgY2FsbEZyYW1lUmVn
aXN0ZXIsIGJhc2VHUFIsCisgICAgICAgICAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoCisgICAgICAgICAgICAgICAgICAgIGJhc2VHUFIsCiAgICAgICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKEZ1bmN0aW9uUHRyKHNsb3QuY3Vz
dG9tR2V0dGVyKCkpLmV4ZWN1dGFibGVBZGRyZXNzKCkpLAogICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihpZGVudC5pbXBsKCkpKTsKICAgICAgICAgICAg
ICAgICBvcGVyYXRpb25GdW5jdGlvbiA9IG9wZXJhdGlvbkNhbGxDdXN0b21HZXR0ZXI7CkBAIC03
OTMsNyArNzkxLDYgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFRyYW5zaXRpb25TdHViKAogewogICAg
IFZNKiB2bSA9ICZleGVjLT52bSgpOwogCi0gICAgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0g
c3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5jYWxsRnJhbWVSZWdpc3Rlcik7CiAg
ICAgR1BSUmVnIGJhc2VHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmJh
c2VHUFIpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgR1BSUmVnIHZhbHVlVGFnR1BSID0g
c3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC52YWx1ZVRhZ0dQUik7CkBAIC05NTAs
OSArOTQ3LDkgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFRyYW5zaXRpb25TdHViKAogICAgICAgICBT
Y3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gdm0tPnNjcmF0Y2hCdWZmZXJGb3JTaXplKGFs
bG9jYXRvci5kZXNpcmVkU2NyYXRjaEJ1ZmZlclNpemUoKSk7CiAgICAgICAgIGFsbG9jYXRvci5w
cmVzZXJ2ZVVzZWRSZWdpc3RlcnNUb1NjcmF0Y2hCdWZmZXIoc3R1YkppdCwgc2NyYXRjaEJ1ZmZl
ciwgc2NyYXRjaEdQUjEpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHN0dWJKaXQuc2V0
dXBBcmd1bWVudHMoY2FsbEZyYW1lUmVnaXN0ZXIsIGJhc2VHUFIsIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2xv
dC5jYWNoZWRPZmZzZXQoKSksIHZhbHVlR1BSKTsKKyAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYmFzZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
c3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzbG90LmNhY2hlZE9mZnNl
dCgpKSwgdmFsdWVHUFIpOwogI2Vsc2UKLSAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50cyhj
YWxsRnJhbWVSZWdpc3RlciwgYmFzZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
c3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzbG90LmNhY2hlZE9mZnNl
dCgpKSwgdmFsdWVHUFIsIHZhbHVlVGFnR1BSKTsKKyAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYmFzZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
c3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzbG90LmNhY2hlZE9mZnNl
dCgpKSwgdmFsdWVHUFIsIHZhbHVlVGFnR1BSKTsKICNlbmRpZgogICAgICAgICBvcGVyYXRpb25D
YWxsID0gc3R1YkppdC5jYWxsKCk7CiAgICAgICAgIGFsbG9jYXRvci5yZXN0b3JlVXNlZFJlZ2lz
dGVyc0Zyb21TY3JhdGNoQnVmZmVyKHN0dWJKaXQsIHNjcmF0Y2hCdWZmZXIsIHNjcmF0Y2hHUFIx
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJl
dmlzaW9uIDE2MDU4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsOSBAQCB1bmlvbiBFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yIHsKICNlbmRpZgogfTsKIAorI2RlZmluZSBUYWdPZmZzZXQgKE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSkKKyNkZWZpbmUgUGF5bG9h
ZE9mZnNldCAoT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5w
YXlsb2FkKSkKKwogZW51bSBXaGljaFZhbHVlV29yZCB7CiAgICAgVGFnV29yZCwKICAgICBQYXls
b2FkV29yZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2
aXNpb24gMTYwNTg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDgsNiArMjA4LDcgQEAgdHlwZWRlZiBPcHRpb25SYW5nZSBv
cHRpb25SYW5nZTsKICAgICB2KGJvb2wsIHNob3dPYmplY3RTdGF0aXN0aWNzLCBmYWxzZSkgXAog
ICAgIFwKICAgICB2KGJvb2wsIGxvZ0dDLCBmYWxzZSkgXAorICAgIHYoYm9vbCwgZGlzYWJsZUdD
LCBmYWxzZSkgXAogICAgIHYodW5zaWduZWQsIGdjTWF4SGVhcFNpemUsIDApIFwKICAgICB2KGJv
b2wsIHJlY29yZEdDUGF1c2VUaW1lcywgZmFsc2UpIFwKICAgICB2KGJvb2wsIGxvZ0hlYXBTdGF0
aXN0aWNzQXRFeGl0LCBmYWxzZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219254</attachid>
            <date>2013-12-14 10:54:25 -0800</date>
            <delta_ts>2013-12-16 12:15:26 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>55729</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwNTk4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBA
CisyMDEzLTEyLTE0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Y1N0YWNrOiBDYWxsaW5nIGludG8gRlRMLWdlbmVyYXRlZCBjb2RlIHNob3VsZCBiZSBmYXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU2NDkKKwor
ICAgICAgICBOb3QgeWV0IHJldmlld2VkLgorCisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAqIGZ0bC9GVExBYmJyZXZp
YXRpb25zLmg6CisgICAgICAgIChKU0M6OkZUTDo6YXJyYXlUeXBlKToKKyAgICAgICAgKiBmdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMQ29tcGlsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Zml4RnVuY3Rp
b25CYXNlZE9uU3RhY2tNYXBzKToKKyAgICAgICAgKiBmdGwvRlRMRXhpdFZhbHVlLmg6CisgICAg
ICAgIChKU0M6OkZUTDo6RXhpdFZhbHVlOjp3aXRoVmlydHVhbFJlZ2lzdGVyKToKKyAgICAgICAg
KiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExKSVRDb2Rl
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRDb2RlOjppbml0aWFsaXplRW50cnlwb2ludCk6
CisgICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6aW5pdGlhbGl6ZUFkZHJlc3NGb3JDYWxsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbCk6CisgICAgICAgIChK
U0M6OkZUTDo6SklUQ29kZTo6ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCk6CisgICAgICAgICog
ZnRsL0ZUTEpJVENvZGUuaDoKKyAgICAgICAgKiBmdGwvRlRMSklURmluYWxpemVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24pOgorICAgICAg
ICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAg
KiBmdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpsb3dlcik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVB1
dEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpidWlsZEV4aXRBcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpwYXlsb2FkRm9yKToK
KyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6dGFnRm9yKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6YWRkcmVzc0Zvcik6CisgICAgICAgICogZnRsL0ZUTE9T
UkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAg
ICAgICAqIGZ0bC9GVExPdXRwdXQuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnB0clRv
SW50KToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKiBmdGwvRlRMU2xvd1BhdGhDYWxsLmg6Cisg
ICAgICAgICogZnRsL0ZUTFN0YXRlLmg6CisgICAgICAgICogZnRsL0ZUTFRodW5rcy5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6b3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAg
ICAgICogZnRsL0ZUTFRodW5rcy5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAg
IChKU0M6OkhlYXA6OmNvbGxlY3RJZk5lY2Vzc2FyeU9yRGVmZXIpOgorICAgICAgICAqIGhlYXAv
SGVhcC5oOgorICAgICAgICAoSlNDOjpIZWFwOjppc0RlZmVycmVkKToKKyAgICAgICAgKiBqaXQv
QXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6dGFnRm9y
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKToKKyAgICAgICAg
KiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRCeUlk
R2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdl
bmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVEdldEJ5SWRHZW5lcmF0b3I6OkpJVEdl
dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAg
IChKU0M6OnRyeUJ1aWxkR2V0QnlJRExpc3QpOgorICAgICAgICAoSlNDOjplbWl0UHV0VHJhbnNp
dGlvblN0dWIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvT3B0aW9ucy5oOgorCiAyMDEzLTEyLTEzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZA
YXBwbGUuY29tPgogCiAgICAgICAgIENTdGFjayBCcmFuY2g6IFJlbW92ZSBXVEZfVVNFX1NFUEFS
QVRFX0NfQU5EX0pTX1NUQUNLCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTYwNTg1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBBZGRyZXNzKGJhc2UsIG9mZnNldCArIGFkZGl0aW9uYWxP
ZmZzZXQpOwogICAgICAgICB9Ci0KKyAgICAgICAgCiAgICAgICAgIFJlZ2lzdGVySUQgYmFzZTsK
ICAgICAgICAgaW50MzJfdCBvZmZzZXQ7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCShyZXZpc2lvbiAxNjA1
ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtMjI1LDcgKzIyNSw2IEBAIHN0cnVjdCBTdHJ1Y3R1cmVTdHVi
SW5mbyB7CiAKICAgICBzdHJ1Y3QgewogICAgICAgICBpbnQ4X3QgcmVnaXN0ZXJzRmx1c2hlZDsK
LSAgICAgICAgaW50OF90IGNhbGxGcmFtZVJlZ2lzdGVyOwogICAgICAgICBpbnQ4X3QgYmFzZUdQ
UjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBpbnQ4X3QgdmFsdWVUYWdHUFI7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAJKHJldmlzaW9uIDE2MDU4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw4ICsyMTMsOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVVJbnQzCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIs
IEdQUlJlZyByZXN1bHRHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVy
OjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQogewog
ICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwg
Y29kZU9yaWdpbiwgdXNlZFJlZ2lzdGVycygpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwK
LSAgICAgICAgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHJlc3VsdEdQUiksIHNw
aWxsTW9kZSAhPSBOZWVkVG9TcGlsbCk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2Rl
T3JpZ2luLCB1c2VkUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLAorICAgICAgICBK
U1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBzcGlsbE1vZGUgIT0gTmVlZFRvU3BpbGwpOwogICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExp
c3Qgc2xvd0Nhc2VzOwpAQCAtMjM1LDkgKzIzNSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZFB1dEJ5SWQoQ29kZU8KICAgICB3cml0ZUJhcnJpZXIoYmFzZUdQUiwgdmFsdWVHUFIsIHZh
bHVlVXNlLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRjaEdQUik7CiAKICAg
ICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNv
ZGVPcmlnaW4sIHVzZWRSZWdpc3RlcnMoKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsCi0g
ICAgICAgIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIHNjcmF0
Y2hHUFIsIGZhbHNlLAotICAgICAgICBtX2ppdC5lY21hTW9kZUZvcihjb2RlT3JpZ2luKSwgcHV0
S2luZCk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCB1c2VkUmVnaXN0
ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLAorICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQ
UiksIHNjcmF0Y2hHUFIsIGZhbHNlLCBtX2ppdC5lY21hTW9kZUZvcihjb2RlT3JpZ2luKSwgcHV0
S2luZCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJVENv
bXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEFiYnJldmlhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFiYnJldmlhdGlvbnMuaAkocmV2aXNpb24gMTYwNTg1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExBYmJyZXZpYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4
LDYgKzU4LDcgQEAgc3RhdGljIGlubGluZSBMVHlwZSBmbG9hdFR5cGUoTENvbnRleHQgYwogc3Rh
dGljIGlubGluZSBMVHlwZSBkb3VibGVUeXBlKExDb250ZXh0IGNvbnRleHQpIHsgcmV0dXJuIGxs
dm0tPkRvdWJsZVR5cGVJbkNvbnRleHQoY29udGV4dCk7IH0KIAogc3RhdGljIGlubGluZSBMVHlw
ZSBwb2ludGVyVHlwZShMVHlwZSB0eXBlKSB7IHJldHVybiBsbHZtLT5Qb2ludGVyVHlwZSh0eXBl
LCAwKTsgfQorc3RhdGljIGlubGluZSBMVHlwZSBhcnJheVR5cGUoTFR5cGUgdHlwZSwgdW5zaWdu
ZWQgY291bnQpIHsgcmV0dXJuIGxsdm0tPkFycmF5VHlwZSh0eXBlLCBjb3VudCk7IH0KIHN0YXRp
YyBpbmxpbmUgTFR5cGUgdmVjdG9yVHlwZShMVHlwZSB0eXBlLCB1bnNpZ25lZCBjb3VudCkgeyBy
ZXR1cm4gbGx2bS0+VmVjdG9yVHlwZSh0eXBlLCBjb3VudCk7IH0KIAogZW51bSBQYWNraW5nTW9k
ZSB7IE5vdFBhY2tlZCwgUGFja2VkIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxNjA1ODUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5
LDggKzg5LDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAg
IGNhc2UgVXBzaWxvbjoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAgIGNhc2Ug
TG9vcEhpbnQ6Ci0gICAgY2FzZSBDYWxsOgotICAgIGNhc2UgQ29uc3RydWN0OgogICAgIGNhc2Ug
R2V0TXlTY29wZToKICAgICBjYXNlIFNraXBTY29wZToKICAgICBjYXNlIEdldENsb3N1cmVSZWdp
c3RlcnM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAJKHJl
dmlzaW9uIDE2MDU4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsMTkgQEAgc3RhdGljIHZvaWQgZml4RnVu
Y3Rpb25CYXNlZE9uU3RhY2tNYXBzKAogewogICAgIFZNJiB2bSA9IHN0YXRlLmdyYXBoLm1fdm07
CiAgICAgU3RhY2tNYXBzIHN0YWNrbWFwcyA9IGppdENvZGUtPnN0YWNrbWFwczsKKyAgICAKKyAg
ICBTdGFja01hcHM6OlJlY29yZE1hcDo6aXRlcmF0b3IgaXRlciA9IHJlY29yZE1hcC5maW5kKHN0
YXRlLmNhcHR1cmVkU3RhY2ttYXBJRCk7CisgICAgUkVMRUFTRV9BU1NFUlQoaXRlciAhPSByZWNv
cmRNYXAuZW5kKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXItPnZhbHVlLmxvY2F0aW9ucy5z
aXplKCkgPT0gMSk7CisgICAgTG9jYXRpb24gY2FwdHVyZWRMb2NhdGlvbiA9CisgICAgICAgIExv
Y2F0aW9uOjpmb3JTdGFja21hcHMoJmppdENvZGUtPnN0YWNrbWFwcywgaXRlci0+dmFsdWUubG9j
YXRpb25zWzBdKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjYXB0dXJlZExvY2F0aW9uLmtpbmQoKSA9
PSBMb2NhdGlvbjo6UmVnaXN0ZXIpOworICAgIFJFTEVBU0VfQVNTRVJUKGNhcHR1cmVkTG9jYXRp
b24uZ3ByKCkgPT0gR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgIFJFTEVBU0VfQVNT
RVJUKCEoY2FwdHVyZWRMb2NhdGlvbi5hZGRlbmQoKSAlIHNpemVvZihSZWdpc3RlcikpKTsKKyAg
ICBpbnQzMl90IGxvY2Fsc09mZnNldCA9IGNhcHR1cmVkTG9jYXRpb24uYWRkZW5kKCkgLyBzaXpl
b2YoUmVnaXN0ZXIpICsgc3RhdGUuZ3JhcGgubV9uZXh0TWFjaGluZUxvY2FsOworICAgIAorICAg
IC8vIEZJWE1FOiBOZWVkIHRvIHVwZGF0ZSBhbGwgbWFjaGluZSB2aXJ0dWFsIHJlZ2lzdGVycyBp
biBydW50aW1lIG1ldGEtZGF0YS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI1NzI1CiAKICAgICBFeGl0VGh1bmtHZW5lcmF0b3IgZXhpdFRodW5rR2Vu
ZXJhdG9yKHN0YXRlKTsKICAgICBleGl0VGh1bmtHZW5lcmF0b3IuZW1pdFRodW5rcygpOwpAQCAt
MTY3LDE1ICsxODAsMjkgQEAgc3RhdGljIHZvaWQgZml4RnVuY3Rpb25CYXNlZE9uU3RhY2tNYXBz
KAogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvbigpKQogICAgICAg
ICAgICAgICAgIGRhdGFMb2coIkhhbmRsaW5nIE9TUiBzdGFja21hcCAjIiwgZXhpdC5tX3N0YWNr
bWFwSUQsICJcbiIpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBTdGFja01hcHM6OlJlY29y
ZE1hcDo6aXRlcmF0b3IgaXRlciA9IHJlY29yZE1hcC5maW5kKGV4aXQubV9zdGFja21hcElEKTsK
KyAgICAgICAgICAgIGl0ZXIgPSByZWNvcmRNYXAuZmluZChleGl0Lm1fc3RhY2ttYXBJRCk7CiAg
ICAgICAgICAgICBpZiAoaXRlciA9PSByZWNvcmRNYXAuZW5kKCkpIHsKICAgICAgICAgICAgICAg
ICAvLyBJdCB3YXMgb3B0aW1pemVkIG91dC4KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaW5mby5tX3RodW5rQWRkcmVz
cyA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2YoaW5mby5tX3RodW5rTGFiZWwpOwotICAgICAgICAg
ICAgCiAgICAgICAgICAgICBleGl0Lm1fcGF0Y2hhYmxlQ29kZU9mZnNldCA9IGxpbmtCdWZmZXIt
Pm9mZnNldE9mKGluZm8ubV90aHVua0p1bXApOworICAgICAgICAgICAgCisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGogPSBleGl0Lm1fdmFsdWVzLnNpemUoKTsgai0tOykgeworICAgICAgICAg
ICAgICAgIEV4aXRWYWx1ZSB2YWx1ZSA9IGV4aXQubV92YWx1ZXNbal07CisgICAgICAgICAgICAg
ICAgaWYgKCF2YWx1ZS5pc0luSlNTdGFja1NvbWVob3coKSkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZS52aXJ0dWFsUmVnaXN0ZXIoKS5p
c0xvY2FsKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
IGV4aXQubV92YWx1ZXNbal0gPSB2YWx1ZS53aXRoVmlydHVhbFJlZ2lzdGVyKAorICAgICAgICAg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIodmFsdWUudmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0
KCkgKyBsb2NhbHNPZmZzZXQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvbigpKSB7CisgICAgICAgICAgICAg
ICAgRHVtcENvbnRleHQgY29udGV4dDsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRXhp
dCB2YWx1ZXM6ICIsIGluQ29udGV4dChleGl0Lm1fdmFsdWVzLCAmY29udGV4dCksICJcbiIpOwor
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0ZS5maW5hbGl6
ZXItPmV4aXRUaHVua3NMaW5rQnVmZmVyID0gbGlua0J1ZmZlci5yZWxlYXNlKCk7CkBAIC0xOTAs
NyArMjE3LDcgQEAgc3RhdGljIHZvaWQgZml4RnVuY3Rpb25CYXNlZE9uU3RhY2tNYXBzKAogICAg
ICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvbigpKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkhhbmRsaW5nIEdldEJ5SWQgc3RhY2ttYXAgIyIsIGdldEJ5SWQuc3RhY2tt
YXBJRCgpLCAiXG4iKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgU3RhY2tNYXBzOjpSZWNv
cmRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSByZWNvcmRNYXAuZmluZChnZXRCeUlkLnN0YWNrbWFwSUQo
KSk7CisgICAgICAgICAgICBpdGVyID0gcmVjb3JkTWFwLmZpbmQoZ2V0QnlJZC5zdGFja21hcElE
KCkpOwogICAgICAgICAgICAgaWYgKGl0ZXIgPT0gcmVjb3JkTWFwLmVuZCgpKSB7CiAgICAgICAg
ICAgICAgICAgLy8gSXQgd2FzIG9wdGltaXplZCBvdXQuCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CkBAIC0yMDIsMTggKzIyOSwxNyBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25T
dGFja01hcHMoCiAgICAgICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0
ZXJTZXQ6OmFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJSZWcg
cmVzdWx0ID0gcmVjb3JkLmxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKTsKLSAgICAgICAgICAgIEdQ
UlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IHJlY29yZC5sb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCk7
Ci0gICAgICAgICAgICBHUFJSZWcgYmFzZSA9IHJlY29yZC5sb2NhdGlvbnNbMl0uZGlyZWN0R1BS
KCk7CisgICAgICAgICAgICBHUFJSZWcgYmFzZSA9IHJlY29yZC5sb2NhdGlvbnNbMV0uZGlyZWN0
R1BSKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICAgICAgICAgIGNvZGVCbG9jaywgZ2V0QnlJZC5jb2RlT3JpZ2luKCksIHVzZWRS
ZWdpc3RlcnMsIGNhbGxGcmFtZVJlZ2lzdGVyLAotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KGJhc2UpLCBKU1ZhbHVlUmVncyhyZXN1bHQpLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgY29k
ZUJsb2NrLCBnZXRCeUlkLmNvZGVPcmlnaW4oKSwgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3Mo
YmFzZSksCisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0KSwgZmFsc2UpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgYmVnaW4gPSBzbG93
UGF0aEpJVC5sYWJlbCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgICAgICBzdGF0ZSwgdXNl
ZFJlZ2lzdGVycywgc2xvd1BhdGhKSVQsIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0
LAotICAgICAgICAgICAgICAgIGNhbGxGcmFtZVJlZ2lzdGVyLCBnZW4uc3R1YkluZm8oKSwgYmFz
ZSwgZ2V0QnlJZC51aWQoKSk7CisgICAgICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCksIGJhc2Us
IGdldEJ5SWQudWlkKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGJlZ2luLCBjYWxsKTsKICAgICAgICAgICAgIApAQCAtMjI3LDcgKzI1Myw3IEBA
IHN0YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICAgICAgICAgIGlm
IChPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRpb24oKSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJIYW5kbGluZyBQdXRCeUlkIHN0YWNrbWFwICMiLCBwdXRCeUlkLnN0YWNrbWFwSUQoKSwgIlxu
Iik7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFN0YWNrTWFwczo6UmVjb3JkTWFwOjppdGVy
YXRvciBpdGVyID0gcmVjb3JkTWFwLmZpbmQocHV0QnlJZC5zdGFja21hcElEKCkpOworICAgICAg
ICAgICAgaXRlciA9IHJlY29yZE1hcC5maW5kKHB1dEJ5SWQuc3RhY2ttYXBJRCgpKTsKICAgICAg
ICAgICAgIGlmIChpdGVyID09IHJlY29yZE1hcC5lbmQoKSkgewogICAgICAgICAgICAgICAgIC8v
IEl0IHdhcyBvcHRpbWl6ZWQgb3V0LgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjM4
LDIwICsyNjQsMTkgQEAgc3RhdGljIHZvaWQgZml4RnVuY3Rpb25CYXNlZE9uU3RhY2tNYXBzKAog
ICAgICAgICAgICAgLy8gRklYTUU6IExMVk0gc2hvdWxkIHRlbGwgdXMgd2hpY2ggcmVnaXN0ZXJz
IGFyZSBsaXZlLgogICAgICAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IFJlZ2lz
dGVyU2V0OjphbGxSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgR1BSUmVn
IGNhbGxGcmFtZVJlZ2lzdGVyID0gcmVjb3JkLmxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKTsKLSAg
ICAgICAgICAgIEdQUlJlZyBiYXNlID0gcmVjb3JkLmxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKTsK
LSAgICAgICAgICAgIEdQUlJlZyB2YWx1ZSA9IHJlY29yZC5sb2NhdGlvbnNbMl0uZGlyZWN0R1BS
KCk7CisgICAgICAgICAgICBHUFJSZWcgYmFzZSA9IHJlY29yZC5sb2NhdGlvbnNbMF0uZGlyZWN0
R1BSKCk7CisgICAgICAgICAgICBHUFJSZWcgdmFsdWUgPSByZWNvcmQubG9jYXRpb25zWzFdLmRp
cmVjdEdQUigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBKSVRQdXRCeUlkR2VuZXJhdG9y
IGdlbigKLSAgICAgICAgICAgICAgICBjb2RlQmxvY2ssIHB1dEJ5SWQuY29kZU9yaWdpbigpLCB1
c2VkUmVnaXN0ZXJzLCBjYWxsRnJhbWVSZWdpc3RlciwKLSAgICAgICAgICAgICAgICBKU1ZhbHVl
UmVncyhiYXNlKSwgSlNWYWx1ZVJlZ3ModmFsdWUpLCBNYWNyb0Fzc2VtYmxlcjo6c2NyYXRjaFJl
Z2lzdGVyLAotICAgICAgICAgICAgICAgIGZhbHNlLCBwdXRCeUlkLmVjbWFNb2RlKCksIHB1dEJ5
SWQucHV0S2luZCgpKTsKKyAgICAgICAgICAgICAgICBjb2RlQmxvY2ssIHB1dEJ5SWQuY29kZU9y
aWdpbigpLCB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyhiYXNlKSwKKyAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyh2YWx1ZSksIE1hY3JvQXNzZW1ibGVyOjpzY3JhdGNoUmVnaXN0ZXIsIGZh
bHNlLCBwdXRCeUlkLmVjbWFNb2RlKCksCisgICAgICAgICAgICAgICAgcHV0QnlJZC5wdXRLaW5k
KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgYmVn
aW4gPSBzbG93UGF0aEpJVC5sYWJlbCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICBz
dGF0ZSwgdXNlZFJlZ2lzdGVycywgc2xvd1BhdGhKSVQsIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCks
IGNhbGxGcmFtZVJlZ2lzdGVyLAotICAgICAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLCB2YWx1
ZSwgYmFzZSwgcHV0QnlJZC51aWQoKSk7CisgICAgICAgICAgICAgICAgc3RhdGUsIHVzZWRSZWdp
c3RlcnMsIHNsb3dQYXRoSklULCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBnZW4uc3R1YkluZm8o
KSwKKyAgICAgICAgICAgICAgICB2YWx1ZSwgYmFzZSwgcHV0QnlJZC51aWQoKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoYmVnaW4sIGNhbGwpOwog
ICAgICAgICAgICAgCkBAIC0yNzksNyArMzA0LDcgQEAgc3RhdGljIHZvaWQgZml4RnVuY3Rpb25C
YXNlZE9uU3RhY2tNYXBzKAogICAgIGZvciAodW5zaWduZWQgZXhpdEluZGV4ID0gaml0Q29kZS0+
b3NyRXhpdC5zaXplKCk7IGV4aXRJbmRleC0tOykgewogICAgICAgICBPU1JFeGl0Q29tcGlsYXRp
b25JbmZvJiBpbmZvID0gc3RhdGUuZmluYWxpemVyLT5vc3JFeGl0W2V4aXRJbmRleF07CiAgICAg
ICAgIE9TUkV4aXQmIGV4aXQgPSBqaXRDb2RlLT5vc3JFeGl0W2V4aXRJbmRleF07Ci0gICAgICAg
IFN0YWNrTWFwczo6UmVjb3JkTWFwOjppdGVyYXRvciBpdGVyID0gcmVjb3JkTWFwLmZpbmQoZXhp
dC5tX3N0YWNrbWFwSUQpOworICAgICAgICBpdGVyID0gcmVjb3JkTWFwLmZpbmQoZXhpdC5tX3N0
YWNrbWFwSUQpOwogICAgICAgICBpZiAoaXRlciA9PSByZWNvcmRNYXAuZW5kKCkpIHsKICAgICAg
ICAgICAgIC8vIFRoaXMgY291bGQgaGFwcGVuIGlmIExMVk0gb3B0aW1pemVzIG91dCBhbiBPU1Ig
ZXhpdC4KICAgICAgICAgICAgIGNvbnRpbnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExFeGl0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEV4aXRWYWx1ZS5oCShyZXZpc2lvbiAxNjA1ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDE1
IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGlzSW5KU1N0YWNrU29tZWhvdygpKTsKICAgICAg
ICAgcmV0dXJuIFZpcnR1YWxSZWdpc3Rlcih1LnZpcnR1YWxSZWdpc3Rlcik7CiAgICAgfQorICAg
IAorICAgIEV4aXRWYWx1ZSB3aXRoVmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0
dWFsUmVnaXN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoaXNJbkpTU3RhY2tTb21laG93KCkp
OworICAgICAgICBFeGl0VmFsdWUgcmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5kID0gbV9r
aW5kOworICAgICAgICByZXN1bHQudS52aXJ0dWFsUmVnaXN0ZXIgPSB2aXJ0dWFsUmVnaXN0ZXIu
b2Zmc2V0KCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogCiAgICAgLy8gSWYgaXQn
cyBpbiB0aGUgSlNTdGFjayBzb21laG93LCB0aGlzIHdpbGwgdGVsbCB5b3Ugd2hhdCBmb3JtYXQg
aXQncyBpbiwgaW4gYSBtYW5uZXIKICAgICAvLyB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCBleGl0
QXJndW1lbnQoKS5mb3JtYXQoKS4gSWYgaXQncyBhIGNvbnN0YW50IG9yIGl0J3MgZGVhZCwgaXQK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50cmluc2ljUmVw
b3NpdG9yeS5oCShyZXZpc2lvbiAxNjA1ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oYWRkV2l0aE92ZXJm
bG93MzIsICJsbHZtLnNhZGQud2l0aC5vdmVyZmxvdy5pMzIiLCBmdW5jdGlvblR5cGUoc3RydWN0
VHlwZShtX2NvbnRleHQsIGludDMyLCBib29sZWFuKSwgaW50MzIsIGludDMyKSkgXAogICAgIG1h
Y3JvKGFkZFdpdGhPdmVyZmxvdzY0LCAibGx2bS5zYWRkLndpdGgub3ZlcmZsb3cuaTY0IiwgZnVu
Y3Rpb25UeXBlKHN0cnVjdFR5cGUobV9jb250ZXh0LCBpbnQ2NCwgYm9vbGVhbiksIGludDY0LCBp
bnQ2NCkpIFwKICAgICBtYWNybyhkb3VibGVBYnMsICJsbHZtLmZhYnMuZjY0IiwgZnVuY3Rpb25U
eXBlKGRvdWJsZVR5cGUsIGRvdWJsZVR5cGUpKSBcCisgICAgbWFjcm8oZnJhbWVBZGRyZXNzLCAi
bGx2bS5mcmFtZWFkZHJlc3MiLCBmdW5jdGlvblR5cGUocG9pbnRlclR5cGUoaW50OCksIGludDMy
KSkgXAogICAgIG1hY3JvKG11bFdpdGhPdmVyZmxvdzMyLCAibGx2bS5zbXVsLndpdGgub3ZlcmZs
b3cuaTMyIiwgZnVuY3Rpb25UeXBlKHN0cnVjdFR5cGUobV9jb250ZXh0LCBpbnQzMiwgYm9vbGVh
biksIGludDMyLCBpbnQzMikpIFwKICAgICBtYWNybyhtdWxXaXRoT3ZlcmZsb3c2NCwgImxsdm0u
c211bC53aXRoLm92ZXJmbG93Lmk2NCIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RUeXBlKG1fY29udGV4
dCwgaW50NjQsIGJvb2xlYW4pLCBpbnQ2NCwgaW50NjQpKSBcCiAgICAgbWFjcm8ocGF0Y2hwb2lu
dEludDY0LCAibGx2bS5leHBlcmltZW50YWwucGF0Y2hwb2ludC5pNjQiLCBmdW5jdGlvblR5cGUo
aW50NjQsIGludDMyLCBpbnQzMiwgcmVmOCwgaW50MzIsIFZhcmlhZGljKSkgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCShyZXZpc2lvbiAxNjA1ODUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NCwyMSArNTQsMjUgQEAgdm9pZCBKSVRDb2RlOjphZGREYXRhU2VjdGlvbihSZWZDb3Vu
dGVkQQogICAgIG1fZGF0YVNlY3Rpb25zLmFwcGVuZChkYXRhU2VjdGlvbik7CiB9CiAKLXZvaWQg
SklUQ29kZTo6aW5pdGlhbGl6ZUNvZGUoQ29kZVJlZiBlbnRyeXBvaW50KQordm9pZCBKSVRDb2Rl
Ojppbml0aWFsaXplRW50cnlwb2ludChDb2RlUmVmIGVudHJ5cG9pbnQpCiB7CiAgICAgbV9lbnRy
eXBvaW50ID0gZW50cnlwb2ludDsKIH0KIAordm9pZCBKSVRDb2RlOjppbml0aWFsaXplQWRkcmVz
c0ZvckNhbGwoQ29kZVB0ciBhZGRyZXNzKQoreworICAgIG1fYWRkcmVzc0ZvckNhbGwgPSBhZGRy
ZXNzOworfQorCiBKSVRDb2RlOjpDb2RlUHRyIEpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKCkKIHsK
LSAgICBSRUxFQVNFX0FTU0VSVChtX2VudHJ5cG9pbnQpOwotICAgIHJldHVybiBtX2VudHJ5cG9p
bnQuY29kZSgpOworICAgIHJldHVybiBtX2FkZHJlc3NGb3JDYWxsOwogfQogCiB2b2lkKiBKSVRD
b2RlOjpleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQobV9lbnRyeXBvaW50KTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4obV9lbnRyeXBvaW50LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSArIG9mZnNldDsK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9hZGRyZXNzRm9yQ2FsbC5leGVj
dXRhYmxlQWRkcmVzcygpKSArIG9mZnNldDsKIH0KIAogdm9pZCogSklUQ29kZTo6ZGF0YUFkZHJl
c3NBdE9mZnNldChzaXplX3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJ
VENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENv
ZGUuaAkocmV2aXNpb24gMTYwNTg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExK
SVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDggQEAgcHVibGljOgogICAgIHZv
aWQgaW5pdGlhbGl6ZUV4aXRUaHVua3MoQ29kZVJlZik7CiAgICAgdm9pZCBhZGRIYW5kbGUoUGFz
c1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPik7CiAgICAgdm9pZCBhZGREYXRhU2VjdGlv
bihSZWZDb3VudGVkQXJyYXk8TFNlY3Rpb25Xb3JkPik7Ci0gICAgdm9pZCBpbml0aWFsaXplQ29k
ZShDb2RlUmVmIGVudHJ5cG9pbnQpOworICAgIHZvaWQgaW5pdGlhbGl6ZUVudHJ5cG9pbnQoQ29k
ZVJlZik7CisgICAgdm9pZCBpbml0aWFsaXplQWRkcmVzc0ZvckNhbGwoQ29kZVB0cik7CiAgICAg
CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPj4mIGhhbmRs
ZXMoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZXM7IH0KICAgICBjb25zdCBWZWN0b3I8UmVmQ291
bnRlZEFycmF5PExTZWN0aW9uV29yZD4+JiBkYXRhU2VjdGlvbnMoKSBjb25zdCB7IHJldHVybiBt
X2RhdGFTZWN0aW9uczsgfQpAQCAtNzMsNiArNzQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IFZlY3RvcjxSZWZDb3VudGVkQXJyYXk8TFNlY3Rpb25Xb3JkPj4gbV9kYXRhU2VjdGlvbnM7CiAg
ICAgVmVjdG9yPFJlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPj4gbV9oYW5kbGVzOworICAg
IENvZGVQdHIgbV9hZGRyZXNzRm9yQ2FsbDsKICAgICBDb2RlUmVmIG1fZW50cnlwb2ludDsKICAg
ICBDb2RlUmVmIG1fZXhpdFRodW5rczsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCShyZXZpc2lvbiAxNjA1ODUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTczLDkgKzczLDcgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24oKQogICAg
ICAgICAgICAgZXhpdFRodW5rc0xpbmtCdWZmZXItPmxpbmsoCiAgICAgICAgICAgICAgICAgaW5m
by5tX3RodW5rSnVtcCwKICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCgKLSAgICAg
ICAgICAgICAgICAgICAgbV9wbGFuLnZtLmZ0bFRodW5rcy0+Z2V0T1NSRXhpdEdlbmVyYXRpb25U
aHVuaygKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGxhbi52bSwgTG9jYXRpb246OmZvclN0
YWNrbWFwcygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaml0Q29kZS0+c3RhY2ttYXBz
LCBpdGVyLT52YWx1ZS5sb2NhdGlvbnNbMF0pKS5jb2RlKCkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9wbGFuLnZtLmdldENUSVN0dWIob3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvciku
Y29kZSgpKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGppdENvZGUtPmluaXRpYWxp
emVFeGl0VGh1bmtzKApAQCAtMTA1LDcgKzEwMyw3IEBAIGJvb2wgSklURmluYWxpemVyOjpmaW5h
bGl6ZUZ1bmN0aW9uKCkKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2s7
CiAgICAgaWYgKGFyaXR5Q2hlY2suaXNTZXQoKSkKICAgICAgICAgd2l0aEFyaXR5Q2hlY2sgPSBl
bnRyeXBvaW50TGlua0J1ZmZlci0+bG9jYXRpb25PZihhcml0eUNoZWNrKTsKLSAgICBqaXRDb2Rl
LT5pbml0aWFsaXplQ29kZSgKKyAgICBqaXRDb2RlLT5pbml0aWFsaXplRW50cnlwb2ludCgKICAg
ICAgICAgRklOQUxJWkVfREZHX0NPREUoCiAgICAgICAgICAgICAqZW50cnlwb2ludExpbmtCdWZm
ZXIsCiAgICAgICAgICAgICAoIkZUTCBlbnRyeXBvaW50IHRodW5rIGZvciAlcyB3aXRoIExMVk0g
Z2VuZXJhdGVkIGNvZGUgYXQgJXAiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9w
bGFuLmNvZGVCbG9jay5nZXQoKSwgSklUQ29kZTo6RlRMSklUKSkuZGF0YSgpLCBmdW5jdGlvbikp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkocmV2aXNpb24gMTYw
NTg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDMsMTIgKzQzLDYgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewog
CiB1c2luZyBuYW1lc3BhY2UgREZHOwogCi1zdGF0aWMgdm9pZCBjb21waWxlRW50cnkoQ0NhbGxI
ZWxwZXJzJiBqaXQpCi17Ci0gICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgaml0
LmVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlcihqaXQuY29kZUJsb2NrKCksIEpTU3Rh
Y2s6OkNvZGVCbG9jayk7Ci19Ci0KIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiB7CiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0ZS5ncmFwaC5tX2NvZGVCbG9jazsKQEAgLTU2LDcgKzUw
LDEwIEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgLy8gTExWTSB3aWxsIGNyZWF0ZSBp
dHMgb3duIGp1bXAgdGFibGVzIGFzIG5lZWRlZC4KICAgICBjb2RlQmxvY2stPmNsZWFyU3dpdGNo
SnVtcFRhYmxlcygpOwogICAgIAotICAgIHN0YXRlLmppdENvZGUtPmNvbW1vbi5mcmFtZVJlZ2lz
dGVyQ291bnQgPSBzdGF0ZS5ncmFwaC5mcmFtZVJlZ2lzdGVyQ291bnQoKTsKKyAgICAvLyBGSVhN
RTogTmVlZCB0byBrbm93IHRoZSByZWFsIGZyYW1lIHJlZ2lzdGVyIGNvdW50LgorICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU3MjcKKyAgICBzdGF0ZS5q
aXRDb2RlLT5jb21tb24uZnJhbWVSZWdpc3RlckNvdW50ID0gMTAwMDsKKyAgICAKICAgICBzdGF0
ZS5qaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCA9IHN0YXRlLmdy
YXBoLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4aXQoKTsKICAgICAKICAgICBpZiAoIXN0YXRl
LmdyYXBoLm1faW5saW5lQ2FsbEZyYW1lcy0+aXNFbXB0eSgpKQpAQCAtNjQsNzEgKzYxLDI5IEBA
IHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgCiAgICAgLy8gQ3JlYXRlIHRoZSBlbnRyeXBv
aW50LiBOb3RlIHRoYXQgd2UgdXNlIHRoaXMgZW50cnlwb2ludCB0b3RhbGx5IGRpZmZlcmVudGx5
CiAgICAgLy8gZGVwZW5kaW5nIG9uIHdoZXRoZXIgd2UncmUgZG9pbmcgT1NSIGVudHJ5IG9yIG5v
dC4KLSAgICAvLyBGSVhNRTogRXhjZXB0IGZvciBPU1IgZW50cnksIHRoaXMgaXMgYSB0b3RhbCBr
bHVkZ2UgLSBMTFZNIHNob3VsZCBqdXN0IHVzZSBvdXIKLSAgICAvLyBjYWxsaW5nIGNvbnZlbnRp
b24uCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzYy
MQogICAgIENDYWxsSGVscGVycyBqaXQoJnN0YXRlLmdyYXBoLm1fdm0sIGNvZGVCbG9jayk7CiAg
ICAgCiAgICAgT3duUHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXI7CiAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCBhcml0eUNoZWNrOworCisgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGZyYW1lID0g
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKAorICAgICAgICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyLCAtc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKHZvaWQqKSkpOworICAgIAog
ICAgIHN3aXRjaCAoc3RhdGUuZ3JhcGgubV9wbGFuLm1vZGUpIHsKICAgICBjYXNlIEZUTE1vZGU6
IHsKLSAgICAgICAgY29tcGlsZUVudHJ5KGppdCk7CisgICAgICAgIENDYWxsSGVscGVyczo6SnVt
cExpc3QgbWFpblBhdGhKdW1wczsKICAgICAKLSAgICAgICAgLy8gVGhpcyBwYXJ0IGlzIG9ubHkg
bmVjZXNzYXJ5IGZvciBmdW5jdGlvbnMuIFdlIGN1cnJlbnRseSBvbmx5IGNvbXBpbGUgZnVuY3Rp
b25zLgotICAgICAgICAKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBmcm9tQXJpdHlDaGVj
ayA9IGppdC5sYWJlbCgpOwotICAgICAgICAKLSAgICAgICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0
IHN1ZmZpY2llbnQgc3BhY2UgaXMgYXZhaWxhYmxlIGluIHRoZSBKU1N0YWNrLgotICAgICAgICAv
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MjkxCi0g
ICAgICAgIGppdC5hZGRQdHIoCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
Mih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzdGF0ZS5qaXRDb2RlLT5jb21tb24ucmVxdWlyZWRS
ZWdpc3RlckNvdW50Rm9yRXhpdCkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwKLSAgICAg
ICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcCBzdGFja0NoZWNrID0gaml0LmJyYW5jaFB0cigKLSAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6QWJvdmUsCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFi
c29sdXRlQWRkcmVzcyhzdGF0ZS5ncmFwaC5tX3ZtLmFkZHJlc3NPZkpTU3RhY2tMaW1pdCgpKSwK
LSAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJl
bCBmcm9tU3RhY2tDaGVjayA9IGppdC5sYWJlbCgpOwotICAgICAgICAKLSAgICAgICAgaml0LnNl
dHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7Ci0gICAgICAgIGppdC5tb3ZlKAotICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRl
LmdlbmVyYXRlZEZ1bmN0aW9uKSksCi0gICAgICAgICAgICBHUFJJbmZvOjpub25BcmdHUFIwKTsK
LSAgICAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgIGppdC5lbWl0
RnVuY3Rpb25FcGlsb2d1ZSgpOwotICAgICAgICBqaXQucmV0KCk7Ci0gICAgICAgIAotICAgICAg
ICBzdGFja0NoZWNrLmxpbmsoJmppdCk7Ci0gICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihjb2RlQmxvY2spLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwotICAgICAg
ICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKLSAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihDYWxsRnJhbWU6OkxvY2F0aW9uOjplbmNvZGVBc0J5dGVjb2RlT2Zmc2V0KDAp
KSwKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxS
ZWdpc3Rlcj4oSlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsKLSAgICAgICAgaml0LnN0b3JlUHRy
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmc3RhdGUuZ3JhcGgubV92bS50b3BDYWxsRnJh
bWUpOwotICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbFN0YWNrQ2hlY2sgPSBqaXQuY2Fs
bCgpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgLy8gRklYTUU6IG5lZWQgdG8gbWFr
ZSB0aGlzIGNhbGwgcmVnaXN0ZXIgd2l0aCBleGNlcHRpb24gaGFuZGxpbmcgc29tZWhvdy4gVGhp
cyBpcwotICAgICAgICAvLyBwYXJ0IG9mIGEgYmlnZ2VyIHByb2JsZW06IEZUTCBzaG91bGQgYmUg
YWJsZSB0byBoYW5kbGUgZXhjZXB0aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzYyMgotICAgICAgICAvLyBVbnRpbCB0aGVuLCB1c2Ug
YSBKSVQgQVNTRVJULgotICAgICAgICBqaXQubG9hZDY0KHN0YXRlLmdyYXBoLm1fdm0uYWRkcmVz
c09mRXhjZXB0aW9uKCksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgaml0LmppdEFzc2VydElz
TnVsbChHUFJJbmZvOjpyZWdUMCk7Ci0jZW5kaWYKLSAgICAgICAgaml0Lmp1bXAoZnJvbVN0YWNr
Q2hlY2spOwotICAgICAgICAKLSAgICAgICAgYXJpdHlDaGVjayA9IGppdC5sYWJlbCgpOwotICAg
ICAgICBjb21waWxlRW50cnkoaml0KTsKICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAg
IENDYWxsSGVscGVyczo6cGF5bG9hZEZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KEpT
U3RhY2s6OkFyZ3VtZW50Q291bnQpKSwKKyAgICAgICAgICAgIGZyYW1lLndpdGhPZmZzZXQoc2l6
ZW9mKFJlZ2lzdGVyKSAqIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLAogICAgICAgICAgICAgR1BS
SW5mbzo6cmVnVDEpOwotICAgICAgICBqaXQuYnJhbmNoMzIoCisgICAgICAgIG1haW5QYXRoSnVt
cHMuYXBwZW5kKGppdC5icmFuY2gzMigKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWJvdmVP
ckVxdWFsLCBHUFJJbmZvOjpyZWdUMSwKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKLSAgICAgICAgICAgIC5saW5rVG8o
ZnJvbUFyaXR5Q2hlY2ssICZqaXQpOworICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKSk7CisgICAgICAgIGppdC5lbWl0RnVu
Y3Rpb25Qcm9sb2d1ZSgpOwogICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihDYWxsRnJhbWU6OkxvY2F0aW9uOjpl
bmNvZGVBc0J5dGVjb2RlT2Zmc2V0KDApKSwKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFn
Rm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oSlNTdGFjazo6QXJndW1lbnRDb3VudCkp
KTsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291
bnQpKTsKICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAm
c3RhdGUuZ3JhcGgubV92bS50b3BDYWxsRnJhbWUpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OkNh
bGwgY2FsbEFyaXR5Q2hlY2sgPSBqaXQuY2FsbCgpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAg
LTEzOSwxNiArOTQsMjAgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgaml0Lmxv
YWQ2NChzdGF0ZS5ncmFwaC5tX3ZtLmFkZHJlc3NPZkV4Y2VwdGlvbigpLCBHUFJJbmZvOjpyZWdU
MSk7CiAgICAgICAgIGppdC5qaXRBc3NlcnRJc051bGwoR1BSSW5mbzo6cmVnVDEpOwogI2VuZGlm
Ci0gICAgICAgIGlmIChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiAhPSBHUFJJbmZvOjpyZWdUMCkK
LSAgICAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjpy
ZWdUMCk7Ci0gICAgICAgIGppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJ
bmZvOjpyZWdUMCkubGlua1RvKGZyb21Bcml0eUNoZWNrLCAmaml0KTsKKyAgICAgICAgaml0Lm1v
dmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgaml0
LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIG1haW5QYXRoSnVtcHMuYXBwZW5kKGpp
dC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMCkpOworICAg
ICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpD
YWxsIGNhbGxBcml0eUZpeHVwID0gaml0LmNhbGwoKTsKLSAgICAgICAgaml0Lmp1bXAoZnJvbUFy
aXR5Q2hlY2spOwotICAgICAgICAKKyAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7
CisgICAgICAgIG1haW5QYXRoSnVtcHMuYXBwZW5kKGppdC5qdW1wKCkpOworCiAgICAgICAgIGxp
bmtCdWZmZXIgPSBhZG9wdFB0cihuZXcgTGlua0J1ZmZlcihzdGF0ZS5ncmFwaC5tX3ZtLCAmaml0
LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKLSAgICAgICAgbGlua0J1
ZmZlci0+bGluayhjYWxsU3RhY2tDaGVjaywgb3BlcmF0aW9uU3RhY2tDaGVjayk7CiAgICAgICAg
IGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Q2hlY2ssIGNvZGVCbG9jay0+bV9pc0NvbnN0cnVj
dG9yID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNo
ZWNrKTsKICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25Q
dHIoKHN0YXRlLmdyYXBoLm1fdm0uZ2V0Q1RJU3R1Yihhcml0eUZpeHVwKSkuY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXBz
LCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1
bmN0aW9uKSkpOworCisgICAgICAgIHN0YXRlLmppdENvZGUtPmluaXRpYWxpemVBZGRyZXNzRm9y
Q2FsbChNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5l
cmF0ZWRGdW5jdGlvbikpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTE1
NywxNiArMTE2LDE1IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIC8vIHZhbHVl
cyBpbnRvIHRoZSBzY3JhdGNoIGJ1ZmZlci4gRXZlcnl0aGluZyBzaG91bGQgYmUgZ29vZCB0byBn
byAtIGF0IHRoaXMKICAgICAgICAgLy8gcG9pbnQgd2UndmUgZXZlbiBkb25lIHRoZSBzdGFjayBj
aGVjay4gQmFzaWNhbGx5IHdlIGp1c3QgaGF2ZSB0byBtYWtlIHRoZQogICAgICAgICAvLyBjYWxs
IHRvIHRoZSBMTFZNLWdlbmVyYXRlZCBjb2RlLgotICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHNF
eGVjU3RhdGUoKTsKLSAgICAgICAgaml0Lm1vdmUoCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVu
Y3Rpb24pKSwKLSAgICAgICAgICAgIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAgICBqaXQu
Y2FsbChHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBz
dGFydCA9IGppdC5sYWJlbCgpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsK
LSAgICAgICAgaml0LnJldCgpOworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbWFpblBhdGhK
dW1wID0gaml0Lmp1bXAoKTsKICAgICAgICAgCiAgICAgICAgIGxpbmtCdWZmZXIgPSBhZG9wdFB0
cihuZXcgTGlua0J1ZmZlcigKICAgICAgICAgICAgIHN0YXRlLmdyYXBoLm1fdm0sICZqaXQsIGNv
ZGVCbG9jaywgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkpOworICAgICAgICBsaW5rQnVmZmVy
LT5saW5rKG1haW5QYXRoSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQq
PihzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbikpKTsKKworICAgICAgICBzdGF0ZS5qaXRDb2RlLT5p
bml0aWFsaXplQWRkcmVzc0ZvckNhbGwobGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGFydCkpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE2MDU4NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw2ICs1MSwxMCBAQCB1c2luZyBuYW1lc3BhY2UgREZHOwogCiBzdGF0aWMg
aW50IGNvbXBpbGVDb3VudGVyOwogCisvLyBGSVhNRTogR2V0IHJpZCBvZiB0aGlzIGFuZCBpbnRy
b2R1Y2UgYSByZWFsIHN0YWNrIGNoZWNrLgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNTY1MAorc3RhdGljIHVpbnRwdHJfdCBzdGFja0xpbWl0OworCiAvLyBV
c2luZyB0aGlzIGluc3RlYWQgb2YgdHlwZUNoZWNrKCkgaGVscHMgdG8gcmVkdWNlIHRoZSBsb2Fk
IG9uIExMVk0sIGJ5IGNyZWF0aW5nCiAvLyBzaWduaWZpY2FudGx5IGxlc3MgZGVhZCBjb2RlLgog
I2RlZmluZSBGVExfVFlQRV9DSEVDSyhsb3dWYWx1ZSwgaGlnaFZhbHVlLCB0eXBlc1Bhc3NlZFRo
cm91Z2gsIGZhaWxDb25kaXRpb24pIGRvIHsgXApAQCAtOTIsMTkgKzk2LDE0IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGxsdm0tPk1vZHVsZUNyZWF0ZVdpdGhOYW1lSW5Db250ZXh0KG5hbWUuZGF0
YSgpLCBtX2Z0bFN0YXRlLmNvbnRleHQpOwogICAgICAgICAKICAgICAgICAgbV9mdGxTdGF0ZS5m
dW5jdGlvbiA9IGFkZEZ1bmN0aW9uKAotICAgICAgICAgICAgbV9mdGxTdGF0ZS5tb2R1bGUsIG5h
bWUuZGF0YSgpLCBmdW5jdGlvblR5cGUobV9vdXQuaW50NjQsIG1fb3V0LmludFB0cikpOworICAg
ICAgICAgICAgbV9mdGxTdGF0ZS5tb2R1bGUsIG5hbWUuZGF0YSgpLCBmdW5jdGlvblR5cGUobV9v
dXQuaW50NjQpKTsKICAgICAgICAgc2V0RnVuY3Rpb25DYWxsaW5nQ29udihtX2Z0bFN0YXRlLmZ1
bmN0aW9uLCBMTFZNQ0NhbGxDb252KTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmluaXRpYWxp
emUobV9mdGxTdGF0ZS5tb2R1bGUsIG1fZnRsU3RhdGUuZnVuY3Rpb24sIG1faGVhcHMpOwogICAg
ICAgICAKLSAgICAgICAgbV9wcm9sb2d1ZSA9IGFwcGVuZEJhc2ljQmxvY2sobV9mdGxTdGF0ZS5j
b250ZXh0LCBtX2Z0bFN0YXRlLmZ1bmN0aW9uKTsKLSAgICAgICAgbV9vdXQuYXBwZW5kVG8obV9w
cm9sb2d1ZSk7Ci0gICAgICAgIGNyZWF0ZVBoaVZhcmlhYmxlcygpOwotICAgICAgICAKLSAgICAg
ICAgbV9jYWxsRnJhbWUgPSBtX291dC5wYXJhbSgwKTsKLSAgICAgICAgbV90YWdUeXBlTnVtYmVy
ID0gbV9vdXQuY29uc3RJbnQ2NChUYWdUeXBlTnVtYmVyKTsKLSAgICAgICAgbV90YWdNYXNrID0g
bV9vdXQuY29uc3RJbnQ2NChUYWdNYXNrKTsKLSAgICAgICAgCisgICAgICAgIG1fcHJvbG9ndWUg
PSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlByb2xvZ3VlIikpOworICAgICAgICBMQmFzaWNCbG9j
ayBzdGFja092ZXJmbG93ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJTdGFjayBvdmVyZmxvdyIp
KTsKKwogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXgg
PCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKICAgICAgICAgICAgIG1faGln
aEJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgICAgIGlmICghbV9o
aWdoQmxvY2spCkBAIC0xMTIsOCArMTExLDM0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYmxv
Y2tzLmFkZChtX2hpZ2hCbG9jaywgRlRMX05FV19CTE9DSyhtX291dCwgKCJCbG9jayAiLCAqbV9o
aWdoQmxvY2spKSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIG1fb3V0LmFwcGVuZFRv
KG1fcHJvbG9ndWUpOwotICAgICAgICBtX291dC5qdW1wKGxvd0Jsb2NrKG1fZ3JhcGguYmxvY2so
MCkpKTsKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obV9wcm9sb2d1ZSwgc3RhY2tPdmVyZmxvdyk7
CisgICAgICAgIGNyZWF0ZVBoaVZhcmlhYmxlcygpOworICAgICAgICBMVmFsdWUgY2FwdHVyZWRB
bGxvY2EgPSBtX291dC5hbGxvY2EoYXJyYXlUeXBlKG1fb3V0LmludDY0LCBtX2dyYXBoLm1fbmV4
dE1hY2hpbmVMb2NhbCkpOworICAgICAgICBtX2NhcHR1cmVkID0gbV9vdXQuYWRkKAorICAgICAg
ICAgICAgbV9vdXQucHRyVG9JbnQoY2FwdHVyZWRBbGxvY2EsIG1fb3V0LmludFB0ciksCisgICAg
ICAgICAgICBtX291dC5jb25zdEludFB0cihtX2dyYXBoLm1fbmV4dE1hY2hpbmVMb2NhbCAqIHNp
emVvZihSZWdpc3RlcikpKTs7CisgICAgICAgIAorICAgICAgICAvLyBXZSBzaG91bGQgbm90IGNy
ZWF0ZSBhbnkgYWxsb2NhJ3MgYWZ0ZXIgdGhpcyBwb2ludCwgc2luY2UgdGhleSB3aWxsIGNlYXNl
IHRvCisgICAgICAgIC8vIGJlIG1lbTJyZWcgY2FuZGlkYXRlcy4KKyAgICAgICAgCisgICAgICAg
IG1fZnRsU3RhdGUuY2FwdHVyZWRTdGFja21hcElEID0gbV9zdGFja21hcElEcysrOworICAgICAg
ICBtX291dC5jYWxsKAorICAgICAgICAgICAgbV9vdXQuc3RhY2ttYXBJbnRyaW5zaWMoKSwgbV9v
dXQuY29uc3RJbnQzMihtX2Z0bFN0YXRlLmNhcHR1cmVkU3RhY2ttYXBJRCksCisgICAgICAgICAg
ICBtX291dC5pbnQzMlplcm8sIGNhcHR1cmVkQWxsb2NhKTsKKyAgICAgICAgCisgICAgICAgIG1f
Y2FsbEZyYW1lID0gbV9vdXQucHRyVG9JbnQoCisgICAgICAgICAgICBtX291dC5jYWxsKG1fb3V0
LmZyYW1lQWRkcmVzc0ludHJpbnNpYygpLCBtX291dC5pbnQzMlplcm8pLCBtX291dC5pbnRQdHIp
OworICAgICAgICBtX3RhZ1R5cGVOdW1iZXIgPSBtX291dC5jb25zdEludDY0KFRhZ1R5cGVOdW1i
ZXIpOworICAgICAgICBtX3RhZ01hc2sgPSBtX291dC5jb25zdEludDY0KFRhZ01hc2spOworICAg
ICAgICAKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuY29uc3RJbnRQdHIoY29kZUJsb2Nr
KCkpLCBhZGRyZXNzRm9yKEpTU3RhY2s6OkNvZGVCbG9jaykpOworICAgICAgICBtX291dC5icmFu
Y2goCisgICAgICAgICAgICBtX291dC5iZWxvdyhtX2NhbGxGcmFtZSwgbV9vdXQubG9hZFB0ciht
X291dC5hYnNvbHV0ZSgmc3RhY2tMaW1pdCkpKSwKKyAgICAgICAgICAgIHN0YWNrT3ZlcmZsb3cs
IGxvd0Jsb2NrKG1fZ3JhcGguYmxvY2soMCkpKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LmFw
cGVuZFRvKHN0YWNrT3ZlcmZsb3csIGxvd0Jsb2NrKG1fZ3JhcGguYmxvY2soMCkpKTsKKyAgICAg
ICAgLy8gRklYTUU6IEhhbmRsZSBleGNlcHRpb25zLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTEzNjIyCisgICAgICAgIG1fb3V0LmNyYXNoKCk7CiAgICAgICAgIAog
ICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IGRlcHRoRmlyc3Q7CiAgICAgICAgIG1fZ3JhcGgu
Z2V0QmxvY2tzSW5EZXB0aEZpcnN0T3JkZXIoZGVwdGhGaXJzdCk7CkBAIC0xMjcwLDcgKzEyOTUs
NyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgY2FsbCA9IG1fb3V0LmNhbGwoCiAgICAgICAg
ICAgICBtX291dC5wYXRjaHBvaW50SW50NjRJbnRyaW5zaWMoKSwKICAgICAgICAgICAgIG1fb3V0
LmNvbnN0SW50MzIoc3RhY2ttYXBJRCksIG1fb3V0LmNvbnN0SW50MzIoc2l6ZU9mR2V0QnlJZCgp
KSwKLSAgICAgICAgICAgIGNvbnN0TnVsbChtX291dC5yZWY4KSwgbV9vdXQuY29uc3RJbnQzMigy
KSwgbV9jYWxsRnJhbWUsIGJhc2UpOworICAgICAgICAgICAgY29uc3ROdWxsKG1fb3V0LnJlZjgp
LCBtX291dC5jb25zdEludDMyKDEpLCBiYXNlKTsKICAgICAgICAgc2V0SW5zdHJ1Y3Rpb25DYWxs
aW5nQ29udmVudGlvbihjYWxsLCBMTFZNQW55UmVnQ2FsbENvbnYpOwogICAgICAgICBzZXRKU1Zh
bHVlKGNhbGwpOwogICAgICAgICAKQEAgLTEyOTUsNyArMTMyMCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIExWYWx1ZSBjYWxsID0gbV9vdXQuY2FsbCgKICAgICAgICAgICAgIG1fb3V0LnBhdGNocG9p
bnRWb2lkSW50cmluc2ljKCksCiAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKHN0YWNrbWFw
SUQpLCBtX291dC5jb25zdEludDMyKHNpemVPZlB1dEJ5SWQoKSksCi0gICAgICAgICAgICBjb25z
dE51bGwobV9vdXQucmVmOCksIG1fb3V0LmNvbnN0SW50MzIoMyksIG1fY2FsbEZyYW1lLCBiYXNl
LCB2YWx1ZSk7CisgICAgICAgICAgICBjb25zdE51bGwobV9vdXQucmVmOCksIG1fb3V0LmNvbnN0
SW50MzIoMiksIGJhc2UsIHZhbHVlKTsKICAgICAgICAgc2V0SW5zdHJ1Y3Rpb25DYWxsaW5nQ29u
dmVudGlvbihjYWxsLCBMTFZNQW55UmVnQ2FsbENvbnYpOwogICAgICAgICAKICAgICAgICAgbV9m
dGxTdGF0ZS5wdXRCeUlkcy5hcHBlbmQoUHV0QnlJZERlc2NyaXB0b3IoCkBAIC00MDAzLDcgKzQw
MjgsNiBAQCBwcml2YXRlOgogICAgICAgICBPU1JFeGl0JiBleGl0LCBFeGl0QXJndW1lbnRMaXN0
JiBhcmd1bWVudHMsIEZvcm1hdHRlZFZhbHVlIGxvd1ZhbHVlLAogICAgICAgICBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4pCiAgICAgewotICAgICAgICBhcmd1bWVudHMuYXBwZW5kKG1fY2FsbEZyYW1l
KTsKICAgICAgICAgaWYgKCEhbG93VmFsdWUpCiAgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5k
KGxvd1ZhbHVlLnZhbHVlKCkpOwogICAgICAgICAKQEAgLTQyNjAsMzUgKzQyODQsMzcgQEAgcHJp
dmF0ZToKICAgICB9CiAgICAgVHlwZWRQb2ludGVyIHBheWxvYWRGb3IoTFZhbHVlIGJhc2UsIGlu
dCBvcGVyYW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkZHJlc3NGb3IoYmFzZSwgb3BlcmFu
ZCwgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2Fk
KSk7CisgICAgICAgIHJldHVybiBhZGRyZXNzRm9yKGJhc2UsIG9wZXJhbmQsIFBheWxvYWRPZmZz
ZXQpOwogICAgIH0KICAgICBUeXBlZFBvaW50ZXIgdGFnRm9yKExWYWx1ZSBiYXNlLCBpbnQgb3Bl
cmFuZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZGRyZXNzRm9yKGJhc2UsIG9wZXJhbmQsIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7CisgICAg
ICAgIHJldHVybiBhZGRyZXNzRm9yKGJhc2UsIG9wZXJhbmQsIFRhZ09mZnNldCk7CiAgICAgfQot
ICAgIFR5cGVkUG9pbnRlciBhZGRyZXNzRm9yKGludCBvcGVyYW5kKQorICAgIFR5cGVkUG9pbnRl
ciBhZGRyZXNzRm9yKGludCBvcGVyYW5kLCBwdHJkaWZmX3Qgb2Zmc2V0ID0gMCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZGRyZXNzRm9yKG1fY2FsbEZyYW1lLCBvcGVyYW5kKTsKKyAgICAgICAg
cmV0dXJuIGFkZHJlc3NGb3IoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLCBvZmZzZXQpOwogICAg
IH0KLSAgICBUeXBlZFBvaW50ZXIgYWRkcmVzc0ZvcihWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkK
KyAgICBUeXBlZFBvaW50ZXIgYWRkcmVzc0ZvcihWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgcHRy
ZGlmZl90IG9mZnNldCA9IDApCiAgICAgewotICAgICAgICByZXR1cm4gYWRkcmVzc0ZvcihtX2Nh
bGxGcmFtZSwgb3BlcmFuZC5vZmZzZXQoKSk7CisgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwo
KSkKKyAgICAgICAgICAgIHJldHVybiBhZGRyZXNzRm9yKG1fY2FwdHVyZWQsIG9wZXJhbmQub2Zm
c2V0KCksIG9mZnNldCk7CisgICAgICAgIHJldHVybiBhZGRyZXNzRm9yKG1fY2FsbEZyYW1lLCBv
cGVyYW5kLm9mZnNldCgpLCBvZmZzZXQpOwogICAgIH0KICAgICBUeXBlZFBvaW50ZXIgcGF5bG9h
ZEZvcihpbnQgb3BlcmFuZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBwYXlsb2FkRm9yKG1fY2Fs
bEZyYW1lLCBvcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuIHBheWxvYWRGb3IoVmlydHVhbFJlZ2lz
dGVyKG9wZXJhbmQpKTsKICAgICB9CiAgICAgVHlwZWRQb2ludGVyIHBheWxvYWRGb3IoVmlydHVh
bFJlZ2lzdGVyIG9wZXJhbmQpCiAgICAgewotICAgICAgICByZXR1cm4gcGF5bG9hZEZvcihtX2Nh
bGxGcmFtZSwgb3BlcmFuZC5vZmZzZXQoKSk7CisgICAgICAgIHJldHVybiBhZGRyZXNzRm9yKG9w
ZXJhbmQsIFBheWxvYWRPZmZzZXQpOwogICAgIH0KICAgICBUeXBlZFBvaW50ZXIgdGFnRm9yKGlu
dCBvcGVyYW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRhZ0ZvcihtX2NhbGxGcmFtZSwgb3Bl
cmFuZCk7CisgICAgICAgIHJldHVybiB0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpKTsK
ICAgICB9CiAgICAgVHlwZWRQb2ludGVyIHRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiB0YWdGb3IobV9jYWxsRnJhbWUsIG9wZXJhbmQub2Zmc2V0
KCkpOworICAgICAgICByZXR1cm4gYWRkcmVzc0ZvcihvcGVyYW5kLCBUYWdPZmZzZXQpOwogICAg
IH0KICAgICAKICAgICBWTSYgdm0oKSB7IHJldHVybiBtX2dyYXBoLm1fdm07IH0KQEAgLTQzMDMs
NiArNDMyOSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxCYXNpY0Jsb2NrKiwgTEJhc2ljQmxv
Y2s+IG1fYmxvY2tzOwogICAgIAogICAgIExWYWx1ZSBtX2NhbGxGcmFtZTsKKyAgICBMVmFsdWUg
bV9jYXB0dXJlZDsKICAgICBMVmFsdWUgbV90YWdUeXBlTnVtYmVyOwogICAgIExWYWx1ZSBtX3Rh
Z01hc2s7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRD
b21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
U1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNjA1ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDEz
ICs3OSwxMiBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAKICAgICAvLyBHZXQgdGhl
IGNhbGwgZnJhbWUgYW5kIHRhZyB0aGluZ2llcy4KICAgICAvLyBSZXN0b3JlIHRoZSBleGl0aW5n
IGZ1bmN0aW9uJ3MgY2FsbEZyYW1lIHZhbHVlIGludG8gYSByZWdUNAotICAgIHJlY29yZC0+bG9j
YXRpb25zWzBdLnJlc3RvcmVJbnRvKGppdCwgaml0Q29kZS0+c3RhY2ttYXBzLCByZWdpc3RlclNj
cmF0Y2gsIEdQUkluZm86OnJlZ1Q0KTsKICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTY0KFRhZ1R5cGVOdW1iZXIpLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIp
OwogICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoVGFnTWFzayksIEdQ
UkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAgICAgCiAgICAgLy8gRG8gc29tZSB2YWx1ZSBwcm9m
aWxpbmcuCiAgICAgaWYgKGV4aXQubV9wcm9maWxlVmFsdWVGb3JtYXQgIT0gSW52YWxpZFZhbHVl
Rm9ybWF0KSB7Ci0gICAgICAgIHJlY29yZC0+bG9jYXRpb25zWzFdLnJlc3RvcmVJbnRvKGppdCwg
aml0Q29kZS0+c3RhY2ttYXBzLCByZWdpc3RlclNjcmF0Y2gsIEdQUkluZm86OnJlZ1QwKTsKKyAg
ICAgICAgcmVjb3JkLT5sb2NhdGlvbnNbMF0ucmVzdG9yZUludG8oaml0LCBqaXRDb2RlLT5zdGFj
a21hcHMsIHJlZ2lzdGVyU2NyYXRjaCwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICByZWJveEFj
Y29yZGluZ1RvRm9ybWF0KAogICAgICAgICAgICAgZXhpdC5tX3Byb2ZpbGVWYWx1ZUZvcm1hdCwg
aml0LCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKICAg
ICAgICAgCkBAIC0xMjksNyArMTI4LDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAg
ICAgIGNhc2UgRXhpdFZhbHVlSW5KU1N0YWNrQXNJbnQzMjoKICAgICAgICAgY2FzZSBFeGl0VmFs
dWVJbkpTU3RhY2tBc0ludDUyOgogICAgICAgICBjYXNlIEV4aXRWYWx1ZUluSlNTdGFja0FzRG91
YmxlOgotICAgICAgICAgICAgaml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Io
dmFsdWUudmlydHVhbFJlZ2lzdGVyKCksIEdQUkluZm86OnJlZ1Q0KSwgR1BSSW5mbzo6cmVnVDAp
OworICAgICAgICAgICAgaml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IodmFs
dWUudmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgpAQCAtMTQ5LDE5ICsxNDgsOSBAQCBz
dGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5k
ZXgsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgcmVib3hBY2NvcmRpbmdUb0Zvcm1hdCgKICAg
ICAgICAgICAgIHZhbHVlLnZhbHVlRm9ybWF0KCksIGppdCwgR1BSSW5mbzo6cmVnVDAsIEdQUklu
Zm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86
OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJl
Z2lzdGVyPihvcGVyYW5kKSwgR1BSSW5mbzo6cmVnVDQpKTsKKyAgICAgICAgaml0LnN0b3JlNjQo
R1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihzdGF0aWNfY2FzdDxW
aXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpKSk7CiAgICAgfQogICAgIAotICAgIC8vIFJlc3RvcmUg
dGhlIG9sZCBzdGFjayBwb2ludGVyIGFuZCB0aGVuIHB1dCByZWdUNCBpbnRvIGNhbGxGcmFtZVJl
Z2lzdGVyLiBUaGUgaWRlYSBpcwotICAgIC8vIHRoYXQgdGhlIEZUTCBjYWxsIGZyYW1lIGlzIHB1
c2hlZCBvbnRvIHRoZSBKUyBjYWxsIGZyYW1lIGFuZCB3ZSBjYW4gcmVjb3ZlciB0aGUgb2xkCi0g
ICAgLy8gdmFsdWUgb2YgdGhlIHN0YWNrIHBvaW50ZXIgYnkgcG9wcGluZyB0aGUgRlRMIGNhbGwg
ZnJhbWUuIFdlIGFscmVhZHkga25vdyB3aGF0IHRoZQotICAgIC8vIGZyYW1lIHBvaW50ZXIgaW4g
dGhlIEpTIGNhbGwgZnJhbWUgd2FzIGJlY2F1c2UgaXQgd291bGQgaGF2ZSBiZWVuIHBhc3NlZCBh
cyBhbiBhcmd1bWVudAotICAgIC8vIHRvIHRoZSBGVEwgY2FsbCBmcmFtZS4KLSAgICBqaXQubW92
ZShNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgaml0LnBvcChHUFJJbmZvOjpub25BcmdHUFIwKTsK
LSAgICBqaXQucG9wKEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgIGppdC5tb3ZlKEdQUkluZm86
OnJlZ1Q0LCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgCiAgICAgaGFuZGxlRXhp
dENvdW50cyhqaXQsIGV4aXQpOwogICAgIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoaml0LCBleGl0
KTsKICAgICBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoaml0LCBleGl0KTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkocmV2aXNpb24gMTYwNTg1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDYgKzIx
MCw3IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgY2FzdFRvSW50MzIoTFZhbHVlIHZhbHVlKSB7IHJl
dHVybiBpbnRDYXN0KHZhbHVlLCBpbnQzMik7IH0KICAgICBMVmFsdWUgZnBDYXN0KExWYWx1ZSB2
YWx1ZSwgTFR5cGUgdHlwZSkgeyByZXR1cm4gYnVpbGRGUENhc3QobV9idWlsZGVyLCB2YWx1ZSwg
dHlwZSk7IH0KICAgICBMVmFsdWUgaW50VG9QdHIoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7
IHJldHVybiBidWlsZEludFRvUHRyKG1fYnVpbGRlciwgdmFsdWUsIHR5cGUpOyB9CisgICAgTFZh
bHVlIHB0clRvSW50KExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkgeyByZXR1cm4gYnVpbGRQdHJU
b0ludChtX2J1aWxkZXIsIHZhbHVlLCB0eXBlKTsgfQogICAgIExWYWx1ZSBiaXRDYXN0KExWYWx1
ZSB2YWx1ZSwgTFR5cGUgdHlwZSkgeyByZXR1cm4gYnVpbGRCaXRDYXN0KG1fYnVpbGRlciwgdmFs
dWUsIHR5cGUpOyB9CiAgICAgCiAgICAgTFZhbHVlIGFsbG9jYShMVHlwZSB0eXBlKSB7IHJldHVy
biBidWlsZEFsbG9jYShtX2J1aWxkZXIsIHR5cGUpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCShyZXZpc2lvbiAxNjA1ODUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1OCwxMyArMTU4LDEzIEBAIHByaXZhdGU6CiB9IC8vIGFub255bW91cyBuYW1lc3Bh
Y2UKIAogTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbigKLSAgICBTdGF0ZSYgc3Rh
dGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGppdCwg
Ci0gICAgSl9KSVRPcGVyYXRpb25fRVNzaUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGNhbGxGcmFtZVJlZ2lzdGVyLAotICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
R1BSUmVnIG9iamVjdCwgU3RyaW5nSW1wbCogdWlkKQorICAgIFN0YXRlJiBzdGF0ZSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LAorICAgIEpfSklU
T3BlcmF0aW9uX0VTc2lKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgR1BSUmVnIG9iamVjdCwKKyAgICBTdHJpbmdJbXBsKiB1aWQpCiB7CiAg
ICAgQ2FsbENvbnRleHQgY29udGV4dChzdGF0ZSwgdXNlZFJlZ2lzdGVycywgaml0LCA0LCByZXN1
bHQpOwotICAgIGppdC5zZXR1cEFyZ3VtZW50cygKLSAgICAgICAgY2FsbEZyYW1lUmVnaXN0ZXIs
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHViSW5mbyksIG9iamVjdCwKKyAgICBqaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKAorICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoc3R1YkluZm8pLCBvYmplY3QsCiAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cih1aWQpKTsKICAgICByZXR1cm4gY29udGV4dC5tYWtlQ2FsbChiaXR3aXNlX2Nhc3Q8
dm9pZCo+KG9wZXJhdGlvbikpOwogICAgIC8vIEZJWE1FOiBGVEwgc2hvdWxkIHN1cHBvcnQgZXhj
ZXB0aW9ucy4KQEAgLTE3MywxMiArMTczLDEyIEBAIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oCiAKIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oCiAgICAgU3Rh
dGUmIHN0YXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJz
JiBqaXQsIAotICAgIFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgb3BlcmF0aW9uLCBHUFJSZWcgY2Fs
bEZyYW1lUmVnaXN0ZXIsCi0gICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcg
dmFsdWUsIEdQUlJlZyBvYmplY3QsIFN0cmluZ0ltcGwqIHVpZCkKKyAgICBWX0pJVE9wZXJhdGlv
bl9FU3NpSkpJIG9wZXJhdGlvbiwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcg
dmFsdWUsIEdQUlJlZyBvYmplY3QsCisgICAgU3RyaW5nSW1wbCogdWlkKQogewogICAgIENhbGxD
b250ZXh0IGNvbnRleHQoc3RhdGUsIHVzZWRSZWdpc3RlcnMsIGppdCwgNSwgSW52YWxpZEdQUlJl
Zyk7Ci0gICAgaml0LnNldHVwQXJndW1lbnRzKAotICAgICAgICBjYWxsRnJhbWVSZWdpc3Rlciwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgdmFsdWUsIG9iamVjdCwKKyAg
ICBqaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKAorICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCB2YWx1ZSwgb2JqZWN0LAogICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIodWlkKSk7CiAgICAgcmV0dXJuIGNvbnRleHQubWFrZUNhbGwo
Yml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb24pKTsKICAgICAvLyBGSVhNRTogRlRMIHNob3Vs
ZCBzdXBwb3J0IGV4Y2VwdGlvbnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFNsb3dQYXRoQ2FsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMU2xvd1BhdGhDYWxsLmgJKHJldmlzaW9uIDE2MDU4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDEyICs1Nywx
MCBAQCBwcml2YXRlOgogCiBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKAogICAg
IFN0YXRlJiwgY29uc3QgUmVnaXN0ZXJTZXQmLCBDQ2FsbEhlbHBlcnMmLCBKX0pJVE9wZXJhdGlv
bl9FU3NpSkksCi0gICAgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEdQUlJlZyBvYmplY3QsCi0gICAgU3RyaW5nSW1wbCogdWlkKTsK
KyAgICBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEdQUlJlZyBvYmplY3QsIFN0
cmluZ0ltcGwqIHVpZCk7CiBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKAogICAg
IFN0YXRlJiwgY29uc3QgUmVnaXN0ZXJTZXQmLCBDQ2FsbEhlbHBlcnMmLCBWX0pJVE9wZXJhdGlv
bl9FU3NpSkpJLAotICAgIEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBvYmplY3QsCi0gICAgU3RyaW5nSW1wbCogdWlkKTsK
KyAgICBTdHJ1Y3R1cmVTdHViSW5mbyosIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIG9iamVjdCwgU3Ry
aW5nSW1wbCogdWlkKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCShyZXZpc2lvbiAxNjA1ODUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3
LDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlOwogICAgIEdlbmVyYXRl
ZEZ1bmN0aW9uIGdlbmVyYXRlZEZ1bmN0aW9uOwogICAgIEpJVEZpbmFsaXplciogZmluYWxpemVy
OworICAgIHVuc2lnbmVkIGNhcHR1cmVkU3RhY2ttYXBJRDsKICAgICBTZWdtZW50ZWRWZWN0b3I8
R2V0QnlJZERlc2NyaXB0b3I+IGdldEJ5SWRzOwogICAgIFNlZ21lbnRlZFZlY3RvcjxQdXRCeUlk
RGVzY3JpcHRvcj4gcHV0QnlJZHM7CiAgICAgVmVjdG9yPENTdHJpbmc+IGNvZGVTZWN0aW9uTmFt
ZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCShyZXZpc2lv
biAxNjA1ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBG
VEwgewogCiB1c2luZyBuYW1lc3BhY2UgREZHOwogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3Ny
RXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcihWTSYgdm0sIGNvbnN0IExvY2F0aW9uJiBsb2Nh
dGlvbikKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJh
dG9yKFZNKiB2bSkKIHsKLSAgICBBc3NlbWJseUhlbHBlcnMgaml0KCZ2bSwgMCk7CisgICAgQXNz
ZW1ibHlIZWxwZXJzIGppdCh2bSwgMCk7CiAgICAgCiAgICAgLy8gTm90ZSB0aGF0IHRoZSAicmV0
dXJuIGFkZHJlc3MiIHdpbGwgYmUgdGhlIE9TUiBleGl0IElELgogICAgIApAQCAtNTEsNyArNTEs
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdEdlbmVyYXRpb25UCiAgICAgaml0LnB1
c2goR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5wdXNoKEdQUkluZm86OnJlZ1QwKTsKICAgICAK
LSAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNp
emUocmVxdWlyZWRTY3JhdGNoTWVtb3J5U2l6ZUluQnl0ZXMoKSk7CisgICAgU2NyYXRjaEJ1ZmZl
ciogc2NyYXRjaEJ1ZmZlciA9IHZtLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShyZXF1aXJlZFNjcmF0
Y2hNZW1vcnlTaXplSW5CeXRlcygpKTsKICAgICBjaGFyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxj
aGFyKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKTsKICAgICAKICAgICBzYXZlQWxsUmVn
aXN0ZXJzKGppdCwgYnVmZmVyKTsKQEAgLTYwLDcgKzYwLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIG9zckV4aXRHZW5lcmF0aW9uVAogICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFjdGl2ZUxlbmd0aFB0cigpKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMSk7CiAgICAgaml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5dGVzKCkpLCBHUFJJbmZvOjpub25BcmdHUFIx
KTsKIAotICAgIGxvY2F0aW9uLnJlc3RvcmVJbnRvKGppdCwgYnVmZmVyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjAsIDEpOworICAgIGppdC5sb2FkUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5wZWVrKEdQUkluZm86OmFyZ3VtZW50
R1BSMSwgMyk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgZnVuY3Rpb25DYWxsID0gaml0LmNh
bGwoKTsKICAgICAKQEAgLTg4LDkgKzg4LDkgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9zckV4
aXRHZW5lcmF0aW9uVAogCiAgICAgaml0LnJldCgpOwogICAgIAotICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIodm0sICZqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcigqdm0sICZqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgcGF0Y2hCdWZmZXIubGlu
ayhmdW5jdGlvbkNhbGwsIGNvbXBpbGVGVExPU1JFeGl0KTsKLSAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgKCJGVEwgT1NSIGV4aXQgZ2VuZXJhdGlvbiB0aHVuayBmb3IgY2Fs
bEZyYW1lIGF0ICVzIiwgdG9DU3RyaW5nKGxvY2F0aW9uKS5kYXRhKCkpKTsKKyAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJGVEwgT1NSIGV4aXQgZ2VuZXJhdGlvbiB0aHVu
ayIpKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHNsb3dQYXRoQ2FsbFRodW5rR2VuZXJh
dG9yKFZNJiB2bSwgY29uc3QgU2xvd1BhdGhDYWxsS2V5JiBrZXkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMVGh1bmtzLmgJKHJldmlzaW9uIDE2MDU4NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcg
QEAgY2xhc3MgVk07CiAKIG5hbWVzcGFjZSBGVEwgewogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYg
b3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcihWTSYsIGNvbnN0IExvY2F0aW9uJik7CitN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcihWTSop
OwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiwg
Y29uc3QgU2xvd1BhdGhDYWxsS2V5Jik7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGVBcmd1
bWVudD4KQEAgLTc4LDEyICs3OCw2IEBAIHR5cGVuYW1lIE1hcFR5cGU6OktleVR5cGUga2V5Rm9y
VGh1bmsoTWEKIAogY2xhc3MgVGh1bmtzIHsKIHB1YmxpYzoKLSAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgZ2V0T1NSRXhpdEdlbmVyYXRpb25UaHVuayhWTSYgdm0sIGNvbnN0IExvY2F0aW9uJiBs
b2NhdGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBnZW5lcmF0ZUlmTmVjZXNzYXJ5KAotICAg
ICAgICAgICAgdm0sIG1fb3NyRXhpdFRodW5rcywgbG9jYXRpb24sIG9zckV4aXRHZW5lcmF0aW9u
VGh1bmtHZW5lcmF0b3IpOwotICAgIH0KLSAgICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
Z2V0U2xvd1BhdGhDYWxsVGh1bmsoVk0mIHZtLCBjb25zdCBTbG93UGF0aENhbGxLZXkmIGtleSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBnZW5lcmF0ZUlmTmVjZXNzYXJ5KApAQCAtOTYsNyArOTAs
NiBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogcHJpdmF0ZToKLSAgICBUaHVua01hcDxMb2NhdGlv
bj4gbV9vc3JFeGl0VGh1bmtzOwogICAgIFRodW5rTWFwPFNsb3dQYXRoQ2FsbEtleT4gbV9zbG93
UGF0aENhbGxUaHVua3M7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAkocmV2aXNpb24gMTYwNTg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg3MSwxMCArODcxLDEwIEBAIHZvaWQgSGVhcDo6Y29sbGVj
dChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKIAogYm9vbCBIZWFwOjpjb2xsZWN0SWZOZWNlc3NhcnlP
ckRlZmVyKCkKIHsKLSAgICBpZiAobV9kZWZlcnJhbERlcHRoKQorICAgIGlmIChpc0RlZmVycmVk
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAoIXNob3VsZENvbGxlY3Qo
KSkKKyAgICBpZiAoT3B0aW9uczo6ZGlzYWJsZUdDKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKICAgICBjb2xsZWN0KERvTm90U3dlZXApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaAkocmV2aXNpb24gMTYwNTg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyArMTg0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIAogICAgICAgICB2b2lkIGFkZFJlZmVyZW5jZShKU0NlbGwqLCBBcnJheUJ1ZmZl
ciopOwogICAgICAgICAKLSAgICAgICAgYm9vbCBpc0RlZmVycmVkKCkgY29uc3QgeyByZXR1cm4g
ISFtX2RlZmVycmFsRGVwdGg7IH0KKyAgICAgICAgYm9vbCBpc0RlZmVycmVkKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2RlZmVycmFsRGVwdGggfHwgT3B0aW9uczo6ZGlzYWJsZUdDKCk7IH0KIAogI2lm
IFVTRShDRikKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCByZWxlYXNlU29vbihS
ZXRhaW5QdHI8VD4mJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgJKHJldmlzaW9uIDE2MDU4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw3ICsyMTYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEFkZHJlc3MgdGFnRm9yKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFs
UmVnaXN0ZXIpCiAgICAgewogICAgICAgICBBU1NFUlQodmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQo
KSk7Ci0gICAgICAgIHJldHVybiBBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCB2
aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKKyAgICAgICAgcmV0dXJu
IEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHZpcnR1YWxSZWdpc3Rlci5vZmZz
ZXQoKSAqIHNpemVvZihSZWdpc3RlcikgKyBUYWdPZmZzZXQpOwogICAgIH0KICAgICBzdGF0aWMg
QWRkcmVzcyB0YWdGb3IoaW50IG9wZXJhbmQpCiAgICAgewpAQCAtMjI2LDcgKzIyNiw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgQWRkcmVzcyBwYXlsb2FkRm9yKFZpcnR1YWxSZWdpc3RlciB2aXJ0
dWFsUmVnaXN0ZXIpCiAgICAgewogICAgICAgICBBU1NFUlQodmlydHVhbFJlZ2lzdGVyLmlzVmFs
aWQoKSk7Ci0gICAgICAgIHJldHVybiBBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCB2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7CisgICAgICAg
IHJldHVybiBBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCB2aXJ0dWFsUmVnaXN0
ZXIub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpICsgUGF5bG9hZE9mZnNldCk7CiAgICAgfQog
ICAgIHN0YXRpYyBBZGRyZXNzIHBheWxvYWRGb3IoaW50IG9wZXJhbmQpCiAgICAgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5jcHAJKHJldmlzaW9uIDE2MDU4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3
IEBAIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpKSVRJbmxpbmVDYWNoZUcKIAogSklUQnlJZEdl
bmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAg
ICBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHZhbHVlLCBib29sIHJlZ2lzdGVyc0ZsdXNoZWQpCisgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgdmFsdWUsIGJvb2wgcmVnaXN0ZXJzRmx1c2hlZCkKICAgICA6IEpJVElubGluZUNh
Y2hlR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbikKICAgICAsIG1fYmFzZShiYXNlKQog
ICAgICwgbV92YWx1ZSh2YWx1ZSkKQEAgLTYyLDcgKzYyLDYgQEAgSklUQnlJZEdlbmVyYXRvcjo6
SklUQnlJZEdlbmVyYXRvcigKICAgICBtX3N0dWJJbmZvLT5wYXRjaC51c2VkUmVnaXN0ZXJzLnNl
dChiYXNlKTsKICAgICBtX3N0dWJJbmZvLT5wYXRjaC51c2VkUmVnaXN0ZXJzLnNldCh2YWx1ZSk7
CiAgICAgCi0gICAgbV9zdHViSW5mby0+cGF0Y2guY2FsbEZyYW1lUmVnaXN0ZXIgPSBzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KGNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICBtX3N0dWJJbmZvLT5wYXRjaC5i
YXNlR1BSID0gc3RhdGljX2Nhc3Q8aW50OF90PihiYXNlLnBheWxvYWRHUFIoKSk7CiAgICAgbV9z
dHViSW5mby0+cGF0Y2gudmFsdWVHUFIgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHZhbHVlLnBheWxv
YWRHUFIoKSk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTEzMCwxMSArMTI5LDkgQEAgdm9p
ZCBKSVRHZXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYQogCiBKSVRQdXRCeUlkR2VuZXJh
dG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAotICAg
IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3Mg
dmFsdWUsIEdQUlJlZyBzY3JhdGNoLAotICAgIGJvb2wgcmVnaXN0ZXJzRmx1c2hlZCwgRUNNQU1v
ZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoCi0g
ICAgICAgIGNvZGVCbG9jaywgY29kZU9yaWdpbiwgdXNlZFJlZ2lzdGVycywgY2FsbEZyYW1lUmVn
aXN0ZXIsIGJhc2UsIHZhbHVlLAotICAgICAgICByZWdpc3RlcnNGbHVzaGVkKQorICAgIEpTVmFs
dWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgYm9vbCByZWdp
c3RlcnNGbHVzaGVkLAorICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCisg
ICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgdXNlZFJlZ2lzdGVy
cywgYmFzZSwgdmFsdWUsIHJlZ2lzdGVyc0ZsdXNoZWQpCiAgICAgLCBtX3NjcmF0Y2goc2NyYXRj
aCkKICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgLCBtX3B1dEtpbmQocHV0S2luZCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmgJKHJldmlzaW9uIDE2MDU4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsOCArNTYs
OCBAQCBwcm90ZWN0ZWQ6CiAgICAgSklUQnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklUQnlJ
ZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgUmVnaXN0
ZXJTZXQmLCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIsCi0gICAgICAgIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBib29sIHJlZ2lzdGVyc0ZsdXNoZWQpOworICAgICAgICBD
b2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBSZWdpc3RlclNldCYsIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHZhbHVlLAorICAgICAgICBib29sIHJlZ2lzdGVyc0ZsdXNoZWQpOwog
ICAgIAogcHVibGljOgogICAgIHZvaWQgcmVwb3J0U2xvd1BhdGhDYWxsKE1hY3JvQXNzZW1ibGVy
OjpMYWJlbCBzbG93UGF0aEJlZ2luLCBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsKQpAQCAtOTYs
MTEgKzk2LDggQEAgcHVibGljOgogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvcigKICAgICAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgIEdQUlJlZyBjYWxsRnJhbWVSZWdpc3Rlciwg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsCi0gICAgICAgIGJvb2wgcmVnaXN0
ZXJzRmx1c2hlZCkKLSAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKAotICAgICAgICAgICAgY29k
ZUJsb2NrLCBjb2RlT3JpZ2luLCB1c2VkUmVnaXN0ZXJzLCBjYWxsRnJhbWVSZWdpc3RlciwgYmFz
ZSwgdmFsdWUsCi0gICAgICAgICAgICByZWdpc3RlcnNGbHVzaGVkKQorICAgICAgICBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgYm9vbCByZWdpc3RlcnNGbHVzaGVkKQorICAg
ICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCB1c2VkUmVnaXN0
ZXJzLCBiYXNlLCB2YWx1ZSwgcmVnaXN0ZXJzRmx1c2hlZCkKICAgICB7CiAgICAgfQogICAgIApA
QCAtMTEyLDkgKzEwOSw4IEBAIHB1YmxpYzoKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKCkgeyB9
CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3Jp
Z2luLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgR1BSUmVnIGNhbGxGcmFtZVJl
Z2lzdGVyLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BS
UmVnIHNjcmF0Y2gsIGJvb2wgcmVnaXN0ZXJzRmx1c2hlZCwKLSAgICAgICAgRUNNQU1vZGUsIFB1
dEtpbmQpOworICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3Mg
dmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBib29sIHJlZ2lzdGVyc0ZsdXNoZWQsIEVDTUFNb2RlLCBQ
dXRLaW5kKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXIm
KTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxNjA1ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE5LDcgKzUxOSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbioKIAogICAgIEpJVEdl
dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlT2Zmc2V0KSwgUmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcnMoKSwKLSAgICAgICAg
Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDAp
LCB0cnVlKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCks
IHRydWUpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkBAIC01
NjUsOCArNTY1LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKgog
CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCBSZWdpc3RlclNldDo6c3BlY2lhbFJlZ2lzdGVycygp
LAotICAgICAgICBjYWxsRnJhbWVSZWdpc3RlciwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMSksIHJlZ1QyLCB0cnVlLAotICAgICAgICBtX2NvZGVCbG9jay0+ZWNtYU1vZGUo
KSwgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCB0cnVlLCBtX2NvZGVCbG9jay0+ZWNtYU1v
ZGUoKSwKKyAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKICAgICAKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRo
SnVtcCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNp
b24gMTYwNTg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDcsMTEgKzQ3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAvLyB0aGF0IHdv
dWxkIG9yZGluYXJpbHkgaGF2ZSB3ZWxsLWtub3duIHZhbHVlczoKIC8vIC0gdGFnVHlwZU51bWJl
clJlZ2lzdGVyCiAvLyAtIHRhZ01hc2tSZWdpc3RlcgotLy8gLSBjYWxsRnJhbWVSZWdpc3RlciAq
KgotLy8KLS8vIFdlIGN1cnJlbnRseSBvbmx5IHVzZSB0aGUgY2FsbEZyYW1lUmVnaXN0ZXIgZm9y
IGNsb3N1cmUgY2FsbCBwYXRjaGluZywgYW5kIHdlJ3JlIG5vdCBnb2luZyB0bwotLy8gZ2l2ZSB0
aGUgRlRMIGNsb3N1cmUgY2FsbCBwYXRjaGluZyBzdXBwb3J0IHVudGlsIHdlIHN3aXRjaCB0byB0
aGUgQyBzdGFjayAtIGJ1dCB3aGVuIHdlIGRvIHRoYXQsCi0vLyBjYWxsRnJhbWVSZWdpc3RlciB3
aWxsIGRpc2FwcGVhci4KIAogc3RhdGljIEZ1bmN0aW9uUHRyIHJlYWRDYWxsVGFyZ2V0KFJlcGF0
Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIENvZGVMb2NhdGlvbkNhbGwgY2FsbCkKIHsKQEAgLTQ5
NSw3ICs0OTAsNiBAQCBzdGF0aWMgYm9vbCB0cnlCdWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAg
ICAgICAgIAogICAgICAgICBzdHViSW5mby51LmdldEJ5SWRTZWxmTGlzdC5saXN0U2l6ZSsrOwog
ICAgICAgICAKLSAgICAgICAgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gc3RhdGljX2Nhc3Q8
R1BSUmVnPihzdHViSW5mby5wYXRjaC5jYWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKTsK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gc3Rh
dGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC52YWx1ZVRhZ0dQUik7CkBAIC01MTksNiAr
NTEzLDEwIEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc3VjY2VzczsKICAgICAgICAgCiAgICAgICAgIGlmIChz
bG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkgfHwgc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpKSB7Cisg
ICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNob3VsZG4ndCBiZSBhc3N1bWluZyB0aGF0
IHRoZSB0b3Agb2Ygc3RhY2sgaXMgc2V0IHVwIGZvciBKU0MKKyAgICAgICAgICAgIC8vIEpJVC1z
dHlsZSBDIGNhbGxzLCBzaW5jZSB3ZSBtYXkgYmUgY3VycmVudGx5IG9uIHRvcCBvZiBhbiBGVEwg
ZnJhbWUuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI1NzExCisgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChzbG90LmlzQ2FjaGVh
YmxlR2V0dGVyKCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoc2NyYXRjaEdQUiAhPSBJbnZh
bGlkR1BSUmVnKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZUdQUiAhPSBzY3JhdGNoR1BS
KTsKQEAgLTUzNiwxMSArNTM0LDExIEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3Qo
RXhlY1N0YXQKICAgICAgICAgICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uoc2xvdC5jYWNoZWRP
ZmZzZXQoKSkpLCBzY3JhdGNoR1BSKTsKICNlbmRpZgogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBzdHViSml0LnNldHVwQXJndW1lbnRzKGNhbGxGcmFtZVJlZ2lzdGVyLCBiYXNl
R1BSLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICBzdHViSml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShiYXNlR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICBvcGVy
YXRpb25GdW5jdGlvbiA9IG9wZXJhdGlvbkNhbGxHZXR0ZXI7CiAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIHN0dWJKaXQuc2V0dXBBcmd1bWVudHMoCi0gICAgICAgICAgICAg
ICAgICAgIGNhbGxGcmFtZVJlZ2lzdGVyLCBiYXNlR1BSLAorICAgICAgICAgICAgICAgIHN0dWJK
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKAorICAgICAgICAgICAgICAgICAgICBiYXNl
R1BSLAogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihG
dW5jdGlvblB0cihzbG90LmN1c3RvbUdldHRlcigpKS5leGVjdXRhYmxlQWRkcmVzcygpKSwKICAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoaWRlbnQuaW1w
bCgpKSk7CiAgICAgICAgICAgICAgICAgb3BlcmF0aW9uRnVuY3Rpb24gPSBvcGVyYXRpb25DYWxs
Q3VzdG9tR2V0dGVyOwpAQCAtNzkzLDcgKzc5MSw2IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFu
c2l0aW9uU3R1YigKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKIAotICAgIEdQUlJlZyBj
YWxsRnJhbWVSZWdpc3RlciA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guY2Fs
bEZyYW1lUmVnaXN0ZXIpOwogICAgIEdQUlJlZyBiYXNlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVn
PihzdHViSW5mby5wYXRjaC5iYXNlR1BSKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIEdQ
UlJlZyB2YWx1ZVRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2gudmFs
dWVUYWdHUFIpOwpAQCAtOTUwLDkgKzk0Nyw5IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0
aW9uU3R1YigKICAgICAgICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IHZtLT5zY3Jh
dGNoQnVmZmVyRm9yU2l6ZShhbGxvY2F0b3IuZGVzaXJlZFNjcmF0Y2hCdWZmZXJTaXplKCkpOwog
ICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVVc2VkUmVnaXN0ZXJzVG9TY3JhdGNoQnVmZmVyKHN0
dWJKaXQsIHNjcmF0Y2hCdWZmZXIsIHNjcmF0Y2hHUFIxKTsKICNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgICAgICBzdHViSml0LnNldHVwQXJndW1lbnRzKGNhbGxGcmFtZVJlZ2lzdGVyLCBiYXNlR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKHNsb3QuY2FjaGVkT2Zmc2V0KCkpLCB2YWx1ZUdQUik7CisgICAgICAg
IHN0dWJKaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGJhc2VHUFIsIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIoc2xvdC5jYWNoZWRPZmZzZXQoKSksIHZhbHVlR1BSKTsKICNlbHNlCi0gICAgICAgIHN0dWJK
aXQuc2V0dXBBcmd1bWVudHMoY2FsbEZyYW1lUmVnaXN0ZXIsIGJhc2VHUFIsIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIoc2xvdC5jYWNoZWRPZmZzZXQoKSksIHZhbHVlR1BSLCB2YWx1ZVRhZ0dQUik7CisgICAgICAg
IHN0dWJKaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGJhc2VHUFIsIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIoc2xvdC5jYWNoZWRPZmZzZXQoKSksIHZhbHVlR1BSLCB2YWx1ZVRhZ0dQUik7CiAjZW5kaWYK
ICAgICAgICAgb3BlcmF0aW9uQ2FsbCA9IHN0dWJKaXQuY2FsbCgpOwogICAgICAgICBhbGxvY2F0
b3IucmVzdG9yZVVzZWRSZWdpc3RlcnNGcm9tU2NyYXRjaEJ1ZmZlcihzdHViSml0LCBzY3JhdGNo
QnVmZmVyLCBzY3JhdGNoR1BSMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5oCShyZXZpc2lvbiAxNjA1ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYgKzk3LDkgQEAg
dW5pb24gRW5jb2RlZFZhbHVlRGVzY3JpcHRvciB7CiAjZW5kaWYKIH07CiAKKyNkZWZpbmUgVGFn
T2Zmc2V0IChPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRh
ZykpCisjZGVmaW5lIFBheWxvYWRPZmZzZXQgKE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpCisKIGVudW0gV2hpY2hWYWx1ZVdvcmQgewogICAg
IFRhZ1dvcmQsCiAgICAgUGF5bG9hZFdvcmQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDE2MDU4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDYgKzIwOCw3IEBAIHR5
cGVkZWYgT3B0aW9uUmFuZ2Ugb3B0aW9uUmFuZ2U7CiAgICAgdihib29sLCBzaG93T2JqZWN0U3Rh
dGlzdGljcywgZmFsc2UpIFwKICAgICBcCiAgICAgdihib29sLCBsb2dHQywgZmFsc2UpIFwKKyAg
ICB2KGJvb2wsIGRpc2FibGVHQywgZmFsc2UpIFwKICAgICB2KHVuc2lnbmVkLCBnY01heEhlYXBT
aXplLCAwKSBcCiAgICAgdihib29sLCByZWNvcmRHQ1BhdXNlVGltZXMsIGZhbHNlKSBcCiAgICAg
dihib29sLCBsb2dIZWFwU3RhdGlzdGljc0F0RXhpdCwgZmFsc2UpCg==
</data>
<flag name="review"
          id="242853"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>