<?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>211877</bug_id>
          
          <creation_ts>2020-05-13 20:02:20 -0700</creation_ts>
          <short_desc>Do more speculation that a GetByVal/PutByVal will have an int32 index based on data from ArrayProfile</short_desc>
          <delta_ts>2020-05-18 18:18:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>211935</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>guijemont</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1652498</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-13 20:02:20 -0700</bug_when>
    <thetext>And we could do more to stay in Int52.

And we could perhaps detect if we always successfully can convert to int32, and speculate as such</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652499</commentid>
    <comment_count>1</comment_count>
      <attachid>399327</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-13 20:03:02 -0700</bug_when>
    <thetext>Created attachment 399327
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653748</commentid>
    <comment_count>2</comment_count>
      <attachid>399671</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-18 13:38:01 -0700</bug_when>
    <thetext>Created attachment 399671
WIP

~2.5x faster on microbenchmarks/get-and-put-by-val-double-index-dont-fall-off-a-cliff.js

Might hold off a bit until final tuning and landing of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653779</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-18 15:32:21 -0700</bug_when>
    <thetext>Even simpler, and a 3.75x speedup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653782</commentid>
    <comment_count>4</comment_count>
      <attachid>399678</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-18 15:33:02 -0700</bug_when>
    <thetext>Created attachment 399678
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653787</commentid>
    <comment_count>5</comment_count>
      <attachid>399679</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-18 15:43:25 -0700</bug_when>
    <thetext>Created attachment 399679
patch

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653789</commentid>
    <comment_count>6</comment_count>
      <attachid>399680</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-18 15:56:00 -0700</bug_when>
    <thetext>Created attachment 399680
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653794</commentid>
    <comment_count>7</comment_count>
      <attachid>399680</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-18 16:03:07 -0700</bug_when>
    <thetext>Comment on attachment 399680
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653846</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-18 18:17:53 -0700</bug_when>
    <thetext>Committed r261842: &lt;https://trac.webkit.org/changeset/261842&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399680.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653847</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-18 18:18:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/63372806&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399327</attachid>
            <date>2020-05-13 20:03:02 -0700</date>
            <delta_ts>2020-05-18 13:38:01 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>26692</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDI2MTYzNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtNjcwLDYgKzY3MCwyMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJP
bmx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBJbnQ1MkFzSW50MzI6IHsK
KyAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7
CisgICAgICAgIC8vIE9PUFM6IFdlIGNhbiBhbHNvIHJlZHVjZSB0byBhIGNhc3Rpbmcgbm9kZSBp
ZiB0aGUgaW5wdXQgZG9lc24ndCBoYXZlIHRoZSBhYmlsaXR5IHRvIGJlIGludDY0CisgICAgICAg
IGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBpbnQ2NF90IGFz
SW50NjQgPSBjaGlsZC5hc051bWJlcigpOworICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHN0YXRpY19jYXN0PGludDMyX3Q+KGFzSW50NjQpKSA9PSBhc0ludDY0KSB7CisgICAg
ICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oYXNJbnQ2NCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50MzJP
bmx5KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAgICAgCiAgICAgY2FzZSBWYWx1
ZVRvSW50MzI6IHsKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLnZhbHVlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAkocmV2aXNpb24gMjYxNjM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyMyw2ICs0MjMsMTAgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICBkZWYoUHVyZVZhbHVlKG5v
ZGUsIG5vZGUtPmFyaXRoTW9kZSgpKSk7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgSW50
NTJBc0ludDMyOgorICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUpKTsKKyAgICAgICAgcmV0dXJu
OworCiAgICAgY2FzZSBBcml0aERpdjoKICAgICBjYXNlIEFyaXRoTXVsOgogICAgIGNhc2UgQXJp
dGhTdWI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZp
c2lvbiAyNjE2MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgIGNhc2UgVUludDMyVG9O
dW1iZXI6CiAgICAgY2FzZSBEb3VibGVBc0ludDMyOgorICAgIGNhc2UgSW50NTJBc0ludDMyOgog
ICAgIGNhc2UgQXJpdGhBZGQ6CiAgICAgY2FzZSBBcml0aENsejMyOgogICAgIGNhc2UgQXJpdGhT
dWI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJ
KHJldmlzaW9uIDI2MTYzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDEwIEBAIHB1YmxpYzoKIAogICAg
ICAgICBtX2dyYXBoLm1fcGxhblN0YWdlID0gUGxhblN0YWdlOjpBZnRlckZpeHVwOwogCisgICAg
ICAgIGlmIChTdHJpbmcobV9ncmFwaC5tX2NvZGVCbG9jay0+aW5mZXJyZWROYW1lKCkuZGF0YSgp
KSA9PSAiZmFzdFVwZGF0ZUVkZ2VzQ2FjaGUiKSB7CisgICAgICAgICAgICBtX2dyYXBoLmR1bXAo
KTsKKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTM2LDYg
KzE0MCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBmaXh1cEFyaXRoTXVsKE5vZGUqIG5v
ZGUsIEVkZ2UmIGxlZnRDaGlsZCwgRWRnZSYgcmlnaHRDaGlsZCkKICAgICB7CisgICAgICAgIGRh
dGFMb2dMbigiZml4dXBBcml0aE11bDogIiwgbm9kZS0+aW5kZXgoKSwgICIgICgiLCBTcGVjdWxh
dGlvbkR1bXAobGVmdENoaWxkLT5wcmVkaWN0aW9uKCkpLCAiLCAiLCBTcGVjdWxhdGlvbkR1bXAo
cmlnaHRDaGlsZC0+cHJlZGljdGlvbigpKSwgIikiKTsKICAgICAgICAgaWYgKG1fZ3JhcGguYmlu
YXJ5QXJpdGhTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlLCBGaXh1cFBhc3MpKSB7CiAgICAgICAg
ICAgICBmaXhJbnRPckJvb2xlYW5FZGdlKGxlZnRDaGlsZCk7CiAgICAgICAgICAgICBmaXhJbnRP
ckJvb2xlYW5FZGdlKHJpZ2h0Q2hpbGQpOwpAQCAtMTQ3LDcgKzE1Miw4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93QW5k
TmVnYXRpdmVaZXJvKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBp
ZiAobV9ncmFwaC5iaW5hcnlBcml0aFNob3VsZFNwZWN1bGF0ZUludDUyKG5vZGUsIEZpeHVwUGFz
cykpIHsKKyAgICAgICAgLy9pZiAobV9ncmFwaC5iaW5hcnlBcml0aFNob3VsZFNwZWN1bGF0ZUlu
dDUyKG5vZGUsIEZpeHVwUGFzcykpIHsKKyAgICAgICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3Bl
Y3VsYXRlSW50NTIobm9kZSkpIHsKICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KGxl
ZnRDaGlsZCk7CiAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihyaWdodENoaWxkKTsK
ICAgICAgICAgICAgIGlmIChieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0
aE5vZGVGbGFncygpKSB8fCBsZWZ0Q2hpbGQubm9kZSgpID09IHJpZ2h0Q2hpbGQubm9kZSgpKQpA
QCAtMTkyLDYgKzE5OCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgY2FzZSBJbmM6CiAgICAgICAg
IGNhc2UgRGVjOiB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIkluYzogIiwgbm9kZS0+aW5kZXgo
KSwgICIgIiwgU3BlY3VsYXRpb25EdW1wKG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkpKTsK
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkp
IHsKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUhl
YXBCaWdJbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogdGhlIGZyZWV6aW5n
IGRvZXMgbm90IGFwcGVhciB1c2VmdWwgKHNpbmNlIHRoZSBKU0NlbGwgaXMga2VwdCBhbGl2ZSBi
eSB2bSksIGJ1dCBpdCByZWZ1c2VzIHRvIGNvbXBpbGUgb3RoZXJ3aXNlLgpAQCAtMjQyLDcgKzI0
OSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxk
MigpKTsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDMyKTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUlu
dDUyKCkpIHsKKyAgICAgICAgICAgIC8vfSBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlSW50NTIoKSkgeworICAgICAgICAgICAgfSBlbHNlIGlmIChtX2dyYXBoLnVuYXJ5
QXJpdGhTaG91bGRTcGVjdWxhdGVJbnQ1Mihub2RlLCBGaXh1cFBhc3MpKSB7CiAgICAgICAgICAg
ICAgICAgbm9kZS0+c2V0T3Aob3AgPT0gSW5jID8gQXJpdGhBZGQgOiBBcml0aFN1Yik7CiAgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKICAg
ICAgICAgICAgICAgICBub2RlQ29uc3RhbnRPbmUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzJBc0ludDUyLCBKU0NvbnN0YW50LCBub2RlLT5vcmln
aW4sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShqc051bWJlcigxKSkpKTsKQEAgLTQ5Myw2ICs1MDEs
NyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBWYWx1ZUFkZDogeworICAg
ICAgICAgICAgZGF0YUxvZ0xuKCJmaXh1cCBWYWx1ZUFkZDogIiwgbm9kZS0+aW5kZXgoKSwgICIg
ICgiLCBTcGVjdWxhdGlvbkR1bXAobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSksICIsICIs
IFNwZWN1bGF0aW9uRHVtcChub2RlLT5jaGlsZDIoKS0+cHJlZGljdGlvbigpKSwgIikiKTsKICAg
ICAgICAgICAgIGlmIChhdHRlbXB0VG9NYWtlSW50ZWdlckFkZChub2RlKSkgewogICAgICAgICAg
ICAgICAgIG5vZGUtPnNldE9wKEFyaXRoQWRkKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTg4NCw3ICs4OTMsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxh
Z3MoTm9kZU11c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50NTIobm9kZS0+Y2hp
bGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAvL2lm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnQ1Mihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUt
PmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIGlmIChpc0ludEFueUZvcm1hdChub2Rl
LT5jaGlsZDEoKS0+cHJlZGljdGlvbigpKSAmJiBpc0ludEFueUZvcm1hdChub2RlLT5jaGlsZDIo
KS0+cHJlZGljdGlvbigpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihu
b2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVz
dEdlbmVyYXRlKTsKQEAgLTEwMzAsNiArMTA0MCwzMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgIG1faW5k
ZXhJbkJsb2NrLCBTcGVjTm9uZSwgRm9yY2VPU1JFeGl0LCBub2RlLT5vcmlnaW4pOwogICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAg
IGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSktPnBy
ZWRpY3Rpb24oKSkKKyAgICAgICAgICAgICAgICAmJiBpc0ludEFueUZvcm1hdChtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDEpLT5wcmVkaWN0aW9uKCkpCisgICAgICAgICAgICAgICAgJiYgU3Ry
aW5nKG1fZ3JhcGgubV9jb2RlQmxvY2stPmluZmVycmVkTmFtZSgpLmRhdGEoKSkgPT0gImZhc3RV
cGRhdGVFZGdlc0NhY2hlIgorICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRl
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgSW50NTJPdmVyZmxvdykKKyAgICAgICAgICAgICAgICAm
JiAhbV9ncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIE92ZXJmbG93KQor
ICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgTmVnYXRpdmVaZXJvKSkgeworCisgICAgICAgICAgICAgICAgTm9kZSogaW5kZXggPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5C
bG9jaywgU3BlY0ludDMyT25seSwgSW50NTJBc0ludDMyLCBub2RlLT5vcmlnaW4sCisgICAgICAg
ICAgICAgICAgICAgIEVkZ2UobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS5ub2RlKCksIElu
dDUyUmVwVXNlKSk7CisgICAgICAgICAgICAgICAgLy9pbmRleC0+c2V0QXJpdGhNb2RlKEFyaXRo
OjpDaGVja092ZXJmbG93KTsKKworICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMSkuc2V0Tm9kZShpbmRleCk7CisKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4oInNw
ZWN1bGF0aW5nIGdldGJ5dmFsIiwgU3BlY3VsYXRpb25EdW1wKG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMSktPnByZWRpY3Rpb24oKSkpOworCisgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRy
dWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKFN0cmluZyhtX2dyYXBoLm1fY29kZUJsb2NrLT5p
bmZlcnJlZE5hbWUoKS5kYXRhKCkpID09ICJmYXN0VXBkYXRlRWRnZXNDYWNoZSIpIHsKKyAgICAg
ICAgICAgICAgICBpZiAobV9ncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMs
IE92ZXJmbG93KSB8fCBtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
TmVnYXRpdmVaZXJvKSkgeworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oInNwZWN1bGF0
aW9uIGV4aXR0ZWQiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZSgKICAgICAgICAgICAgICAgICBu
b2RlLT5hcnJheU1vZGUoKS5yZWZpbmUoCkBAIC0xMDM3LDYgKzEwNzEsMTAgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKS0+cHJlZGlj
dGlvbigpLAogICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEp
LT5wcmVkaWN0aW9uKCksCiAgICAgICAgICAgICAgICAgICAgIFNwZWNOb25lKSk7CisKKyAgICAg
ICAgICAgIGlmIChjaGFuZ2VkKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJuZXcgYXJy
YXkgbW9kZTogIiwgbm9kZS0+YXJyYXlNb2RlKCkpOworICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMCksIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSksIG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMikpOwogICAgICAgICAgICAgCkBAIC0xMTcyLDYgKzEyMTAsMjYgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIEVkZ2UmIGNoaWxkMiA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MSk7CiAgICAgICAgICAgICBFZGdlJiBjaGlsZDMgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDIpOwogCisgICAgICAgICAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihjaGlsZDItPnByZWRp
Y3Rpb24oKSkKKyAgICAgICAgICAgICAgICAmJiBpc0ludEFueUZvcm1hdChjaGlsZDItPnByZWRp
Y3Rpb24oKSkKKyAgICAgICAgICAgICAgICAmJiBTdHJpbmcobV9ncmFwaC5tX2NvZGVCbG9jay0+
aW5mZXJyZWROYW1lKCkuZGF0YSgpKSA9PSAiZmFzdFVwZGF0ZUVkZ2VzQ2FjaGUiCisgICAgICAg
ICAgICAgICAgJiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBJ
bnQ1Mk92ZXJmbG93KQorICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpCisgICAgICAgICAgICAgICAgJiYgIW1fZ3Jh
cGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBOZWdhdGl2ZVplcm8pKSB7CisK
KworICAgICAgICAgICAgICAgIE5vZGUqIGluZGV4ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMk9ubHksIElu
dDUyQXNJbnQzMiwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBFZGdlKGNoaWxk
Mi5ub2RlKCksIEludDUyUmVwVXNlKSk7CisgICAgICAgICAgICAgICAgLy9pbmRleC0+c2V0QXJp
dGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKKworICAgICAgICAgICAgICAgIGNoaWxkMi5z
ZXROb2RlKGluZGV4KTsKKworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigic3BlY3VsYXRpbmcg
cHV0Ynl2YWwiLCBTcGVjdWxhdGlvbkR1bXAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS0+
cHJlZGljdGlvbigpKSk7CisKKyAgICAgICAgICAgICAgICAvL2NoYW5nZWQgPSB0cnVlOworICAg
ICAgICAgICAgfQorCiAgICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUoCiAgICAgICAgICAg
ICAgICAgbm9kZS0+YXJyYXlNb2RlKCkucmVmaW5lKAogICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLCBub2RlLApAQCAtMzc5OCw3ICszODU2LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG5v
ZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7CiAgICAgICAgICAgICBub2Rl
LT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZGF0YUxvZ0xuKCJOb3Qgc3Bl
Y3VsYXRpbmcgaW50NTIgYWRkOiAiLCBub2RlLT5pbmRleCgpKTsKICAgICAgICAgCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcAkocmV2aXNpb24gMjYxNjM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4ODUsNiArMTg4NSw3OCBAQCB2b2lkIFBy
ZWZpeDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zCiAgICAgICAgIG91dC5wcmludGYoIiVz
IiwgcHJlZml4U3RyKTsKIH0KIAorYm9vbCBHcmFwaDo6YWRkU2hvdWxkU3BlY3VsYXRlSW50NTIo
Tm9kZSogYWRkKQoreworICAgIGlmICghZW5hYmxlSW50NTIoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIE5vZGUqIGxlZnQgPSBhZGQtPmNoaWxkMSgpLm5vZGUoKTsKKyAgICBO
b2RlKiByaWdodCA9IGFkZC0+Y2hpbGQyKCkubm9kZSgpOworCisgICAgaWYgKGhhc0V4aXRTaXRl
KGFkZCwgSW50NTJPdmVyZmxvdykpIHsKKyAgICAgICAgZGF0YUxvZ0xuKCJpbnQ1MiBvdmVyZmxv
dyBleGl0IHNpdGUiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChO
b2RlOjpzaG91bGRTcGVjdWxhdGVJbnQ1MihsZWZ0LCByaWdodCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgYXV0byBzaG91bGRTcGVjdWxhdGVJbnQ1MkZvckFkZCA9IFtdIChOb2RlKiBu
b2RlKSB7CisgICAgICAgIC8vIFdoZW4gRG91YmxlQ29uc3RhbnQgbm9kZSBhcHBlYXJzLCBpdCBt
ZWFucyB0aGF0IHVzZXJzIGV4cGxpY2l0bHkgd3JpdGUgYSBjb25zdGFudCBpbiB0aGVpciBjb2Rl
IHdpdGggZG91YmxlIGZvcm0gaW5zdGVhZCBvZiBpbnRlZ2VyIGZvcm0gKDEuMCBpbnN0ZWFkIG9m
IDEpLgorICAgICAgICAvLyBJbiB0aGF0IGNhc2UsIHdlIHNob3VsZCBob25vciB0aGlzIGRlY2lz
aW9uOiB1c2luZyBpdCBhcyBpbnRlZ2VyIGlzIG5vdCBhcHByb3ByaWF0ZS4KKyAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gRG91YmxlQ29uc3RhbnQpIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigi
ZG91YmxlIGNvbnN0YW50Iik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGlzSW50QW55Rm9ybWF0KG5vZGUtPnByZWRpY3Rpb24oKSk7CisgICAg
fTsKKworICAgIC8vIEFsbG93IEludDUyIEFyaXRoQWRkIG9ubHkgd2hlbiB0aGUgb25lIHNpZGUg
b2YgdGhlIGJpbmFyeSBvcGVyYXRpb24gc2hvdWxkIGJlIHNwZWN1bGF0ZWQgSW50NTIuIEl0IGlz
IGEgYml0IGNvbnNlcnZhdGl2ZQorICAgIC8vIGRlY2lzaW9uLiBUaGlzIGlzIGJlY2F1c2UgRG91
YmxlIHRvIEludDUyIGNvbnZlcnNpb24gaXMgbm90IHNvIGNoZWFwLiBGcmVxdWVudCBiYWNrLWFu
ZC1mb3J0aCBjb252ZXJzaW9ucyBiZXR3ZWVuIERvdWJsZSBhbmQgSW50NTIKKyAgICAvLyByYXRo
ZXIgaHVydCB0aGUgcGVyZm9ybWFuY2UuIElmIHRoZSBvbmUgc2lkZSBvZiB0aGUgb3BlcmF0aW9u
IGlzIGFscmVhZHkgSW50NTIsIHRoZSBjb3N0IGZvciBjb25zdHJ1Y3RpbmcgQXJpdGhBZGQgYmVj
b21lcworICAgIC8vIGNoZWFwIHNpbmNlIG9ubHkgb25lIERvdWJsZSB0byBJbnQ1MiBjb252ZXJz
aW9uIGNvdWxkIGJlIHJlcXVpcmVkLgorICAgIC8vIFRoaXMgcmVjb3ZlcnMgc29tZSByZWdyZXNz
aW9uIGluIGFzc29ydGVkIHRlc3RzIHdoaWxlIGtlZXBpbmcga3Jha2VuIGNyeXB0byBpbXByb3Zl
bWVudHMuCisgICAgaWYgKCFsZWZ0LT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpICYmICFyaWdodC0+
c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkgeworICAgICAgICBkYXRhTG9nTG4oImJvdGggbm90IGxl
ZnQgYW5kIG5vdCByaWdodCIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
YXV0byB1c2VzQXNOdW1iZXJzID0gW10oTm9kZSogbm9kZSkgeworICAgICAgICBOb2RlRmxhZ3Mg
ZmxhZ3MgPSBub2RlLT5mbGFncygpICYgTm9kZUJ5dGVjb2RlQmFja1Byb3BNYXNrOworICAgICAg
ICBpZiAoIWZsYWdzKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oImVtcHR5IGJhY2sgcHJvcCBm
bGFncyIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIC8v
ZGF0YUxvZ0xuKE5vZGVGbGFnc0R1bXAoZmxhZ3MpKTsKKyAgICAgICAgLy9kYXRhTG9nTG4oIiYg
PSAiLCBOb2RlRmxhZ3NEdW1wKGZsYWdzICYgKE5vZGVCeXRlY29kZVVzZXNBc051bWJlciB8IE5v
ZGVCeXRlY29kZU5lZWRzTmVnWmVybyB8IE5vZGVCeXRlY29kZVVzZXNBc0ludCB8IE5vZGVCeXRl
Y29kZVVzZXNBc0FycmF5SW5kZXgpKSk7CisgICAgICAgIC8vZGF0YUxvZ0xuKCJmbGFncyBhcyBp
bnQgPSAiLCBmbGFncyk7CisgICAgICAgIC8vZGF0YUxvZ0xuKCJmbGFncyBhcyBpbnQgPSAgJiAi
LCBmbGFncyAmIChOb2RlQnl0ZWNvZGVVc2VzQXNOdW1iZXIgfCBOb2RlQnl0ZWNvZGVOZWVkc05l
Z1plcm8gfCBOb2RlQnl0ZWNvZGVVc2VzQXNJbnQgfCBOb2RlQnl0ZWNvZGVVc2VzQXNBcnJheUlu
ZGV4KSk7CisgICAgICAgIC8vYm9vbCByID0gKGZsYWdzICYgKE5vZGVCeXRlY29kZVVzZXNBc051
bWJlciB8IE5vZGVCeXRlY29kZU5lZWRzTmVnWmVybyB8IE5vZGVCeXRlY29kZVVzZXNBc0ludCB8
IE5vZGVCeXRlY29kZVVzZXNBc0FycmF5SW5kZXggfCBOb2RlQnl0ZWNvZGVVc2VzQXNPdGhlcikp
ID09IGZsYWdzOworICAgICAgICAvL2lmICghcikKKyAgICAgICAgLy8gICAgZGF0YUxvZ0xuKCJu
byBudW1iZXIgdXNlcyIpOworICAgICAgICByZXR1cm4gISEoZmxhZ3MgJiAoTm9kZUJ5dGVjb2Rl
VXNlc0FzTnVtYmVyIHwgTm9kZUJ5dGVjb2RlTmVlZHNOZWdaZXJvIHwgTm9kZUJ5dGVjb2RlVXNl
c0FzSW50IHwgTm9kZUJ5dGVjb2RlVXNlc0FzQXJyYXlJbmRleCkpOworICAgIH07CisKKyAgICAv
LyBXcmFwcGluZyBJbnQ1MiB0byBWYWx1ZSBpcyBhbHNvIG5vdCBzbyBjaGVhcC4gVGh1cywgd2Ug
YWxsb3cgSW50NTIgYWRkaXRpb24gb25seSB3aGVuIHRoZSBub2RlIGlzIHVzZWQgYXMgbnVtYmVy
LgorICAgIGlmICghdXNlc0FzTnVtYmVycyhhZGQpKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBhdXRvIHIgPSBzaG91bGRTcGVjdWxhdGVJbnQ1MkZvckFkZChsZWZ0KSAm
JiBzaG91bGRTcGVjdWxhdGVJbnQ1MkZvckFkZChyaWdodCk7CisgICAgaWYgKCFyKQorICAgICAg
ICBkYXRhTG9nTG4oIm5vIHNob3VsZFNwZWN1bGF0ZUZvckFkZCIpOworICAgIHJldHVybiByOwor
fQorCitib29sIEdyYXBoOjp1bmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlSW50NTIoTm9kZSogbm9k
ZSwgUHJlZGljdGlvblBhc3MgcGFzcykKK3sKKyAgICBpZiAoIWVuYWJsZUludDUyKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXNJbnRBbnlGb3JtYXQobm9kZS0+Y2hpbGQx
KCktPnByZWRpY3Rpb24oKSkKKyAgICAgICAgJiYgbm9kZS0+Y2FuU3BlY3VsYXRlSW50NTIocGFz
cykKKyAgICAgICAgJiYgIWhhc0V4aXRTaXRlKG5vZGUsIEludDUyT3ZlcmZsb3cpOworfQorCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDI2MTYzNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAt
MzMwLDcgKzMzMCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkZFNwZWN1bGF0aW9uTW9k
ZShhZGQsIHBhc3MpICE9IERvbnRTcGVjdWxhdGVJbnQzMjsKICAgICB9CiAgICAgCi0gICAgYm9v
bCBhZGRTaG91bGRTcGVjdWxhdGVJbnQ1MihOb2RlKiBhZGQpCisgICAgYm9vbCBhZGRTaG91bGRT
cGVjdWxhdGVJbnQ1MihOb2RlKiBhZGQpOworICAgIC8qCiAgICAgewogICAgICAgICBpZiAoIWVu
YWJsZUludDUyKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNzMsNiArMzc0LDcg
QEAgcHVibGljOgogCiAgICAgICAgIHJldHVybiBzaG91bGRTcGVjdWxhdGVJbnQ1MkZvckFkZChs
ZWZ0KSAmJiBzaG91bGRTcGVjdWxhdGVJbnQ1MkZvckFkZChyaWdodCk7CiAgICAgfQorICAgICov
CiAgICAgCiAgICAgYm9vbCBiaW5hcnlBcml0aFNob3VsZFNwZWN1bGF0ZUludDMyKE5vZGUqIG5v
ZGUsIFByZWRpY3Rpb25QYXNzIHBhc3MpCiAgICAgewpAQCAtNDAyLDcgKzQwNCw4IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICYmIG5vZGUtPmNhblNwZWN1bGF0ZUludDMyKHBhc3MpOwogICAgIH0K
ICAgICAKLSAgICBib29sIHVuYXJ5QXJpdGhTaG91bGRTcGVjdWxhdGVJbnQ1MihOb2RlKiBub2Rl
LCBQcmVkaWN0aW9uUGFzcyBwYXNzKQorICAgIGJvb2wgdW5hcnlBcml0aFNob3VsZFNwZWN1bGF0
ZUludDUyKE5vZGUqIG5vZGUsIFByZWRpY3Rpb25QYXNzIHBhc3MpOworICAgIC8qCiAgICAgewog
ICAgICAgICBpZiAoIWVuYWJsZUludDUyKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC00MTAsNiArNDEzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgJiYgbm9kZS0+Y2FuU3BlY3Vs
YXRlSW50NTIocGFzcykKICAgICAgICAgICAgICYmICFoYXNFeGl0U2l0ZShub2RlLCBJbnQ1Mk92
ZXJmbG93KTsKICAgICB9CisgICAgKi8KIAogI2lmIFVTRShCSUdJTlQzMikKICAgICBib29sIGJp
bmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoTm9kZSogbm9kZSwgUHJlZGljdGlvblBh
c3MgcGFzcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJl
dmlzaW9uIDI2MTYzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKICAgICBcCiAgICAgLyogQXR0ZW1wdCB0byB0cnVuY2F0ZSBhIGRvdWJsZSB0
byBpbnQzMjsgdGhpcyB3aWxsIGV4aXQgaWYgaXQgY2FuJ3QgZG8gaXQuICovXAogICAgIG1hY3Jv
KERvdWJsZUFzSW50MzIsIE5vZGVSZXN1bHRJbnQzMikgXAorICAgIC8qIEF0dGVtcHQgdG8gdHJ1
bmNhdGUgYW4gSW50NTIgdG8gaW50MzI7IHRoaXMgd2lsbCBleGl0IGlmIGl0IGNhbid0IGRvIGl0
LiAqL1wKKyAgICBtYWNybyhJbnQ1MkFzSW50MzIsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIFwK
ICAgICAvKiBDaGFuZ2UgdGhlIHJlcHJlc2VudGF0aW9uIG9mIGEgdmFsdWUuICovXAogICAgIG1h
Y3JvKERvdWJsZVJlcCwgTm9kZVJlc3VsdERvdWJsZSkgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDI2MTYzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0
NywxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKKyAgICAgICAgaWYg
KFN0cmluZyhtX2dyYXBoLm1fY29kZUJsb2NrLT5pbmZlcnJlZE5hbWUoKS5kYXRhKCkpID09ICJm
YXN0VXBkYXRlRWRnZXNDYWNoZSIpIHsKKyAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOworICAg
ICAgICB9CisKICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKTsK
ICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV91bmlmaWNhdGlvblN0YXRlID09IEdsb2JhbGx5VW5p
ZmllZCk7CiAKQEAgLTE5Nyw2ICsyMDEsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBWYWx1
ZUFkZDogewogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgbGVmdCA9IG5vZGUtPmNoaWxkMSgp
LT5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSByaWdodCA9IG5vZGUt
PmNoaWxkMigpLT5wcmVkaWN0aW9uKCk7CisKKyAgICAgICAgICAgIGlmIChTdHJpbmcobV9ncmFw
aC5tX2NvZGVCbG9jay0+aW5mZXJyZWROYW1lKCkuZGF0YSgpKSA9PSAiZmFzdFVwZGF0ZUVkZ2Vz
Q2FjaGUiKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJhZGQ6ICIsIG5vZGUtPmluZGV4
KCkpOworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigibGVmdCA9ICIsIFNwZWN1bGF0aW9uRHVt
cChsZWZ0KSk7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJyaWdodCA9ICIsIFNwZWN1bGF0
aW9uRHVtcChyaWdodCkpOworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigic2hvdWxkIHNwZWMg
aW50NTI6ICIsIG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50NTIobm9kZSkpOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCkgewog
ICAgICAgICAgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJPckJvb2xlYW5TcGVjdWxhdGlvbkV4cGVj
dGluZ0RlZmluZWQobGVmdCkKQEAgLTIzMyw2ICsyNDQsMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBBcml0aEFkZDogewogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgbGVmdCA9IG5vZGUt
PmNoaWxkMSgpLT5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSByaWdo
dCA9IG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCk7CisKKyAgICAgICAgICAgIGlmIChTdHJp
bmcobV9ncmFwaC5tX2NvZGVCbG9jay0+aW5mZXJyZWROYW1lKCkuZGF0YSgpKSA9PSAiZmFzdFVw
ZGF0ZUVkZ2VzQ2FjaGUiKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJhZGQ6ICIsIG5v
ZGUtPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigibGVmdCA9ICIsIFNwZWN1
bGF0aW9uRHVtcChsZWZ0KSk7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJyaWdodCA9ICIs
IFNwZWN1bGF0aW9uRHVtcChyaWdodCkpOworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigic2hv
dWxkIHNwZWMgaW50NTI6ICIsIG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50NTIobm9kZSkp
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobGVmdCAmJiBy
aWdodCkgewogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmFkZFNwZWN1bGF0aW9uTW9kZShu
b2RlLCBtX3Bhc3MpICE9IERvbnRTcGVjdWxhdGVJbnQzMikKQEAgLTI1Myw2ICsyNzEsMTIgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGxlZnQgPSBub2RlLT5jaGlsZDEo
KS0+cHJlZGljdGlvbigpOwogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcmlnaHQgPSBub2Rl
LT5jaGlsZDIoKS0+cHJlZGljdGlvbigpOwogCisgICAgICAgICAgICBpZiAoU3RyaW5nKG1fZ3Jh
cGgubV9jb2RlQmxvY2stPmluZmVycmVkTmFtZSgpLmRhdGEoKSkgPT0gImZhc3RVcGRhdGVFZGdl
c0NhY2hlIikgeworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigic3ViOiAiLCBub2RlLT5pbmRl
eCgpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4oImxlZnQgPSAiLCBTcGVjdWxhdGlvbkR1
bXAobGVmdCkpOworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigicmlnaHQgPSAiLCBTcGVjdWxh
dGlvbkR1bXAocmlnaHQpKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKGxlZnQg
JiYgcmlnaHQpIHsKICAgICAgICAgICAgICAgICBpZiAoaXNGdWxsTnVtYmVyT3JCb29sZWFuU3Bl
Y3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKGxlZnQpCiAgICAgICAgICAgICAgICAgICAgICYmIGlz
RnVsbE51bWJlck9yQm9vbGVhblNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChyaWdodCkpIHsK
QEAgLTI3NCw2ICsyOTgsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBl
IGxlZnQgPSBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpOwogICAgICAgICAgICAgU3BlY3Vs
YXRlZFR5cGUgcmlnaHQgPSBub2RlLT5jaGlsZDIoKS0+cHJlZGljdGlvbigpOwogCisgICAgICAg
ICAgICBpZiAoU3RyaW5nKG1fZ3JhcGgubV9jb2RlQmxvY2stPmluZmVycmVkTmFtZSgpLmRhdGEo
KSkgPT0gImZhc3RVcGRhdGVFZGdlc0NhY2hlIikgeworICAgICAgICAgICAgICAgIGRhdGFMb2dM
bigic3ViOiAiLCBub2RlLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4oImxl
ZnQgPSAiLCBTcGVjdWxhdGlvbkR1bXAobGVmdCkpOworICAgICAgICAgICAgICAgIGRhdGFMb2dM
bigicmlnaHQgPSAiLCBTcGVjdWxhdGlvbkR1bXAocmlnaHQpKTsKKyAgICAgICAgICAgIH0KKwog
ICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKICAgICAgICAgICAgICAgICBpZiAoaXNG
dWxsTnVtYmVyT3JCb29sZWFuU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKGxlZnQpCiAgICAg
ICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJlck9yQm9vbGVhblNwZWN1bGF0aW9uRXhwZWN0
aW5nRGVmaW5lZChyaWdodCkpIHsKQEAgLTM4Nyw2ICs0MTcsMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBBcml0aE11bDogewogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgbGVmdCA9IG5v
ZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBy
aWdodCA9IG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCk7CisKKyAgICAgICAgICAgIGlmIChT
dHJpbmcobV9ncmFwaC5tX2NvZGVCbG9jay0+aW5mZXJyZWROYW1lKCkuZGF0YSgpKSA9PSAiZmFz
dFVwZGF0ZUVkZ2VzQ2FjaGUiKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJtdWw6ICIs
IG5vZGUtPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigibGVmdCA9ICIsIFNw
ZWN1bGF0aW9uRHVtcChsZWZ0KSk7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJyaWdodCA9
ICIsIFNwZWN1bGF0aW9uRHVtcChyaWdodCkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCkgewogICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBXZSdyZSBjdXJyZW50bHkgcmVseWluZyBvbiBwcmVkaWN0aW9uIHByb3BhZ2F0aW9uIGFu
ZCBiYWNrd2FyZHMgcHJvcGFnYXRpb24KQEAgLTM5Nyw4ICs0MzMsOSBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJPckJvb2xlYW5TcGVjdWxhdGlvbkV4cGVj
dGluZ0RlZmluZWQocmlnaHQpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmJp
bmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlSW50MzIobm9kZSwgbV9wYXNzKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwot
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtX2dyYXBoLmJpbmFyeUFyaXRoU2hvdWxkU3Bl
Y3VsYXRlSW50NTIobm9kZSwgbV9wYXNzKSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
bV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnQ1Mihub2RlKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDUyQW55KTsKKyAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihzcGVjdWxhdGVkRG91YmxlVHlw
ZUZvclByZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNjU3
LDcgKzY5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQXJpdGhTdWI6IHsKICAgICAgICAg
ICAgIFNwZWN1bGF0ZWRUeXBlIGxlZnQgPSBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpOwog
ICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcmlnaHQgPSBub2RlLT5jaGlsZDIoKS0+cHJlZGlj
dGlvbigpOwotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICBEb3VibGVCYWxsb3QgYmFs
bG90OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGlzRnVsbE51bWJlclNwZWN1
bGF0aW9uKGxlZnQpCkBAIC02ODMsNyArNzIwLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlm
IChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihsZWZ0KQogICAgICAgICAgICAgICAgICYmIGlzRnVs
bE51bWJlclNwZWN1bGF0aW9uKHJpZ2h0KQogICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmJp
bmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlSW50MzIobm9kZSwgbV9wYXNzKQotICAgICAgICAgICAg
ICAgICYmICFtX2dyYXBoLmJpbmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlSW50NTIobm9kZSwgbV9w
YXNzKSkKKyAgICAgICAgICAgICAgICAvLyYmICFtX2dyYXBoLmJpbmFyeUFyaXRoU2hvdWxkU3Bl
Y3VsYXRlSW50NTIobm9kZSwgbV9wYXNzKQorICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmFk
ZFNob3VsZFNwZWN1bGF0ZUludDUyKG5vZGUpKQogICAgICAgICAgICAgICAgIGJhbGxvdCA9IFZv
dGVEb3VibGU7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFsbG90ID0gVm90
ZVZhbHVlOwpAQCAtMTMwMSw2ICsxMzM5LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNlIFB1
dEJ5VmFsQWxpYXM6CiAgICAgICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKKyAgICAgICAgY2FzZSBJ
bnQ1MkFzSW50MzI6CiAgICAgICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOgogICAgICAgICBj
YXNlIEFycmF5aWZ5OgogICAgICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24g
MjYxNjM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIwOCw2ICsyMDgsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CiAgICAgY2FzZSBVSW50
MzJUb051bWJlcjoKICAgICBjYXNlIERvdWJsZUFzSW50MzI6CisgICAgY2FzZSBJbnQ1MkFzSW50
MzI6CiAgICAgY2FzZSBBcml0aEFkZDoKICAgICBjYXNlIEFyaXRoQ2x6MzI6CiAgICAgY2FzZSBB
cml0aFN1YjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjYxNjM2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM3Nyw2
ICsyMzc3LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBJbnQ1MkFzSW50MzI6IHsKKyAgICAgICAg
U3BlY3VsYXRlU3RyaWN0SW50NTJPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgCisgICAgICAgIEdQ
UlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOworCisgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHZhbHVlR1BS
LCByZXN1bHRHUFIpOworCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBJ
bnQ1Mk92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBudWxscHRyLAorICAgICAgICAgICAgbV9qaXQu
YnJhbmNoNjQoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCB2YWx1ZUdQUiwgcmVzdWx0R1BSKSk7CisK
KyAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIocmVzdWx0R1BSLCByZXN1bHRHUFIpOwor
ICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CisKICAgICBjYXNlIFZhbHVlVG9JbnQzMjogewogICAgICAgICBjb21waWxlVmFs
dWVUb0ludDMyKG5vZGUpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDI2MTYzNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjksNiArNjksNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9k
ZSogCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICBjYXNlIENoZWNrU3RydWN0dXJlT3JF
bXB0eToKICAgICBjYXNlIERvdWJsZUFzSW50MzI6CisgICAgY2FzZSBJbnQ1MkFzSW50MzI6CiAg
ICAgY2FzZSBBcnJheWlmeToKICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgY2Fz
ZSBQdXRTdHJ1Y3R1cmU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNjE2MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNCw2ICsyMjQs
MTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG1fZnRsU3RhdGUuaml0Q29kZS0+Y29tbW9u
LmNhdGNoT1NSRW50cnlCdWZmZXIgPSBtX2dyYXBoLm1fdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUo
c2l6ZW9mKEpTVmFsdWUpICogbnVtYmVyT2ZMaXZlTG9jYWxzKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQorCisgICAgICAgIGlmIChTdHJpbmcobV9ncmFwaC5tX2NvZGVCbG9jay0+aW5mZXJy
ZWROYW1lKCkuZGF0YSgpKSA9PSAiZmFzdFVwZGF0ZUVkZ2VzQ2FjaGUiKSB7CisgICAgICAgICAg
ICBtX2dyYXBoLmR1bXAoKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5l
bnN1cmVTU0FEb21pbmF0b3JzKCk7CiAKQEAgLTc0MCw2ICs3NDQsOSBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgICAgICAgICBjb21waWxlRG91YmxlQXNJbnQz
MigpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW50NTJBc0ludDMyOgorICAg
ICAgICAgICAgY29tcGlsZUludDUyQXNJbnQzMigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgREZHOjpWYWx1ZVJlcDoKICAgICAgICAgICAgIGNvbXBpbGVWYWx1ZVJlcCgpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xODk1LDYgKzE5MDIsMTUgQEAgcHJpdmF0ZToKICAgICAg
ICAgc2V0SW50MzIoaW50ZWdlclZhbHVlKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVJbnQ1
MkFzSW50MzIoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGludDUyVmFsdWUgPSBsb3dTdHJpY3RJ
bnQ1MihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIGludDMyVmFsdWUgPSBtX291
dC5jYXN0VG9JbnQzMihpbnQ1MlZhbHVlKTsKKyAgICAgICAgTFZhbHVlIGludDY0VmFsdWUgPSBt
X291dC5zaWduRXh0MzJUbzY0KGludDMyVmFsdWUpOworICAgICAgICBzcGVjdWxhdGUoSW50NTJP
dmVyZmxvdywgbm9WYWx1ZSgpLCBtX2dyYXBoLm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVG
b3IobV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLm5vZGUoKSksIG1fb3V0Lm5vdEVxdWFsKGludDY0
VmFsdWUsIGludDUyVmFsdWUpKTsKKyAgICAgICAgc2V0SW50MzIoaW50MzJWYWx1ZSk7CisgICAg
fQorCiAgICAgdm9pZCBjb21waWxlVmFsdWVSZXAoKQogICAgIHsKICAgICAgICAgc3dpdGNoICht
X25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNjE2MzYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcw
LDggKzE5NzAsMTcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChKUwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHN1YnNjcmlwdC5pc0ludDMyKCkpIHsKLSAgICAg
ICAgaW50MzJfdCBpID0gc3Vic2NyaXB0LmFzSW50MzIoKTsKKyAgICBPcHRpb25hbDxpbnQzMl90
PiBpbmRleDsKKyAgICBpZiAoc3Vic2NyaXB0LmlzSW50MzIoKSkKKyAgICAgICAgaW5kZXggPSBz
dWJzY3JpcHQuYXNJbnQzMigpOworICAgIGVsc2UgaWYgKHN1YnNjcmlwdC5pc0RvdWJsZSgpKSB7
CisgICAgICAgIGRvdWJsZSBzdWJzY3JpcHREb3VibGUgPSBzdWJzY3JpcHQuYXNEb3VibGUoKTsK
KyAgICAgICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3Vi
c2NyaXB0RG91YmxlKSkgPT0gc3Vic2NyaXB0RG91YmxlKQorICAgICAgICAgICAgaW5kZXggPSBz
dGF0aWNfY2FzdDxpbnQzMl90PihzdWJzY3JpcHREb3VibGUpOworICAgIH0KKworICAgIGlmIChp
bmRleCkgeworICAgICAgICBpbnQzMl90IGkgPSAqaW5kZXg7CiAgICAgICAgIGlmIChpc0pTU3Ry
aW5nKGJhc2VWYWx1ZSkpIHsKICAgICAgICAgICAgIGlmIChpID49IDAgJiYgYXNTdHJpbmcoYmFz
ZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkp
KTsKQEAgLTIwNjcsNiArMjA3Niw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uR2UKICAgICAgICAgfQogICAgIH0KIAorICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGgg
PSB0cnVlOworCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
Z2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHByb2ZpbGUsIGJhc2VWYWx1ZSwgc3Vi
c2NyaXB0KSkpOwogfQogCkBAIC0yMDgzLDE0ICsyMDk0LDMxIEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwo
KSkpIHsKICAgICAgICAgSlNDZWxsKiBiYXNlID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwogCisgICAg
ICAgIGF1dG8gZ2V0QnlWYWxXaXRoSW5kZXggPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDZWxsKiBiYXNlLCB1aW50MzJfdCBpbmRleCkgLT4gRW5jb2RlZEpTVmFsdWUKKyAg
ICAgICAgeworICAgICAgICAgICAgLy9kYXRhTG9nTG4oImluc2lkZSBnZXRCeVZhbFdpdGhJbmRl
eCIpOworICAgICAgICAgICAgaWYgKGJhc2UtPmlzT2JqZWN0KCkpIHsKKyAgICAgICAgICAgICAg
ICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZSk7CisgICAgICAgICAgICAgICAgaWYg
KG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGluZGV4KSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3QtPmdldEluZGV4UXVpY2tseShpbmRleCkpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlKSAmJiBhc1N0
cmluZyhiYXNlKS0+Y2FuR2V0SW5kZXgoaW5kZXgpKQorICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoYXNTdHJpbmcoYmFzZSktPmdldEluZGV4KGdsb2JhbE9iamVjdCwgaW5k
ZXgpKTsKKworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGJhc2Up
LmdldChnbG9iYWxPYmplY3QsIGluZGV4KSk7CisgICAgICAgIH07CisKICAgICAgICAgaWYgKHBy
b3BlcnR5LmlzVUludDMyKCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGdldEJ5VmFsV2l0aEluZGV4KGdsb2JhbE9iamVjdCwgYmFzZSwgcHJvcGVydHkuYXNVSW50MzIo
KSkpOwogCiAgICAgICAgIGlmIChwcm9wZXJ0eS5pc0RvdWJsZSgpKSB7CiAgICAgICAgICAgICBk
b3VibGUgcHJvcGVydHlBc0RvdWJsZSA9IHByb3BlcnR5LmFzRG91YmxlKCk7CiAgICAgICAgICAg
ICB1aW50MzJfdCBwcm9wZXJ0eUFzVUludDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHByb3Bl
cnR5QXNEb3VibGUpOwotICAgICAgICAgICAgaWYgKHByb3BlcnR5QXNVSW50MzIgPT0gcHJvcGVy
dHlBc0RvdWJsZSAmJiBpc0luZGV4KHByb3BlcnR5QXNVSW50MzIpKQorICAgICAgICAgICAgaWYg
KHByb3BlcnR5QXNVSW50MzIgPT0gcHJvcGVydHlBc0RvdWJsZSAmJiBpc0luZGV4KHByb3BlcnR5
QXNVSW50MzIpKSB7CisgICAgICAgICAgICAgICAgLy9kYXRhTG9nTG4oIkNhbGxpbmcgaW50byBn
ZXRCeVZhbFdpdGhJbmRleCIpOwogICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgZ2V0QnlWYWxXaXRoSW5kZXgoZ2xvYmFsT2JqZWN0LCBiYXNlLCBwcm9wZXJ0eUFzVUlu
dDMyKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkuaXNTdHJp
bmcoKSkgewogICAgICAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAqYmFzZS0+c3RydWN0
dXJlKHZtKTsKICAgICAgICAgICAgIGlmIChKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0
eShzdHJ1Y3R1cmUpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399671</attachid>
            <date>2020-05-18 13:38:01 -0700</date>
            <delta_ts>2020-05-18 15:33:02 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>26073</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2dldC1hbmQtcHV0LWJ5LXZhbC1kb3VibGUt
aW5kZXgtZG9udC1mYWxsLW9mZi1hLWNsaWZmLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2dldC1hbmQtcHV0LWJ5LXZhbC1kb3VibGUtaW5kZXgtZG9udC1mYWxsLW9m
Zi1hLWNsaWZmLmpzCShyZXZpc2lvbiAyNjE4MTgpCisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9nZXQtYW5kLXB1dC1ieS12YWwtZG91YmxlLWluZGV4LWRvbnQtZmFsbC1vZmYtYS1jbGlmZi5q
cwkod29ya2luZyBjb3B5KQpAQCAtNDQsNCArNDQsNiBAQCBmdW5jdGlvbiB0ZXN0KHNvdXJjZSwg
dGFyZ2V0LCBhcmVhKSB7CiB9CiBub0lubGluZSh0ZXN0KTsKIAorbGV0IHN0YXJ0ID0gRGF0ZS5u
b3coKTsKIHRlc3Qoc291cmNlLCB0YXJnZXQsIGFyZWEpOworcHJpbnQoRGF0ZS5ub3coKSAtIHN0
YXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDI2MTgxOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtNjcwLDYgKzY3MCwyMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVj
SW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBJbnQ1MkFzSW50
MzI6IHsKKyAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZh
bHVlKCk7CisgICAgICAgIC8vIE9PUFM6IFdlIGNhbiBhbHNvIHJlZHVjZSB0byBhIGNhc3Rpbmcg
bm9kZSBpZiB0aGUgaW5wdXQgZG9lc24ndCBoYXZlIHRoZSBhYmlsaXR5IHRvIGJlIGludDY0Cisg
ICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBpbnQ2
NF90IGFzSW50NjQgPSBjaGlsZC5hc051bWJlcigpOworICAgICAgICAgICAgaWYgKHN0YXRpY19j
YXN0PGludDY0X3Q+KHN0YXRpY19jYXN0PGludDMyX3Q+KGFzSW50NjQpKSA9PSBhc0ludDY0KSB7
CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oYXNJbnQ2NCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVj
SW50MzJPbmx5KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAgICAgCiAgICAgY2Fz
ZSBWYWx1ZVRvSW50MzI6IHsKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLnZhbHVlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAkocmV2aXNpb24gMjYxODE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyMyw2ICs0MjMsMTAgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICBkZWYoUHVyZVZh
bHVlKG5vZGUsIG5vZGUtPmFyaXRoTW9kZSgpKSk7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNh
c2UgSW50NTJBc0ludDMyOgorICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUpKTsKKyAgICAgICAg
cmV0dXJuOworCiAgICAgY2FzZSBBcml0aERpdjoKICAgICBjYXNlIEFyaXRoTXVsOgogICAgIGNh
c2UgQXJpdGhTdWI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CShyZXZpc2lvbiAyNjE4MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgIGNhc2UgVUlu
dDMyVG9OdW1iZXI6CiAgICAgY2FzZSBEb3VibGVBc0ludDMyOgorICAgIGNhc2UgSW50NTJBc0lu
dDMyOgogICAgIGNhc2UgQXJpdGhBZGQ6CiAgICAgY2FzZSBBcml0aENsejMyOgogICAgIGNhc2Ug
QXJpdGhTdWI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAJKHJldmlzaW9uIDI2MTgxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDEwIEBAIHB1YmxpYzoK
IAogICAgICAgICBtX2dyYXBoLm1fcGxhblN0YWdlID0gUGxhblN0YWdlOjpBZnRlckZpeHVwOwog
CisgICAgICAgIC8vaWYgKFN0cmluZyhtX2dyYXBoLm1fY29kZUJsb2NrLT5pbmZlcnJlZE5hbWUo
KS5kYXRhKCkpID09ICJmYXN0VXBkYXRlRWRnZXNDYWNoZSIpIHsKKyAgICAgICAgLy8gICAgbV9n
cmFwaC5kdW1wKCk7CisgICAgICAgIC8vfQorCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IApAQCAtMTM0LDYgKzEzOCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBmaXh1cEFyaXRo
TXVsKE5vZGUqIG5vZGUsIEVkZ2UmIGxlZnRDaGlsZCwgRWRnZSYgcmlnaHRDaGlsZCkKICAgICB7
CisgICAgICAgIC8vZGF0YUxvZ0xuKCJmaXh1cEFyaXRoTXVsOiAiLCBub2RlLT5pbmRleCgpLCAg
IiAgKCIsIFNwZWN1bGF0aW9uRHVtcChsZWZ0Q2hpbGQtPnByZWRpY3Rpb24oKSksICIsICIsIFNw
ZWN1bGF0aW9uRHVtcChyaWdodENoaWxkLT5wcmVkaWN0aW9uKCkpLCAiKSIpOwogICAgICAgICBp
ZiAobV9ncmFwaC5iaW5hcnlBcml0aFNob3VsZFNwZWN1bGF0ZUludDMyKG5vZGUsIEZpeHVwUGFz
cykpIHsKICAgICAgICAgICAgIGZpeEludE9yQm9vbGVhbkVkZ2UobGVmdENoaWxkKTsKICAgICAg
ICAgICAgIGZpeEludE9yQm9vbGVhbkVkZ2UocmlnaHRDaGlsZCk7CkBAIC0xNDUsNyArMTUwLDgg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1vZGUoQXJpdGg6OkNo
ZWNrT3ZlcmZsb3dBbmROZWdhdGl2ZVplcm8pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChtX2dyYXBoLmJpbmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlSW50NTIo
bm9kZSwgRml4dXBQYXNzKSkgeworICAgICAgICAvL2lmIChtX2dyYXBoLmJpbmFyeUFyaXRoU2hv
dWxkU3BlY3VsYXRlSW50NTIobm9kZSwgRml4dXBQYXNzKSkgeworICAgICAgICBpZiAobV9ncmFw
aC5iaW5hcnlBcml0aG1ldGljU2hvdWxkU3BlY3VsYXRlSW50NTIobm9kZSkpIHsKICAgICAgICAg
ICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KGxlZnRDaGlsZCk7CiAgICAgICAgICAgICBmaXhFZGdl
PEludDUyUmVwVXNlPihyaWdodENoaWxkKTsKICAgICAgICAgICAgIGlmIChieXRlY29kZUNhbkln
bm9yZU5lZ2F0aXZlWmVybyhub2RlLT5hcml0aE5vZGVGbGFncygpKSB8fCBsZWZ0Q2hpbGQubm9k
ZSgpID09IHJpZ2h0Q2hpbGQubm9kZSgpKQpAQCAtMTkwLDYgKzE5Niw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgY2FzZSBJbmM6CiAgICAgICAgIGNhc2UgRGVjOiB7CisgICAgICAgICAgICAvL2Rh
dGFMb2dMbigiSW5jOiAiLCBub2RlLT5pbmRleCgpLCAgIiAiLCBTcGVjdWxhdGlvbkR1bXAobm9k
ZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSkpOwogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewogICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiB0aGUgZnJlZXppbmcgZG9lcyBub3QgYXBwZWFyIHVzZWZ1bCAoc2lu
Y2UgdGhlIEpTQ2VsbCBpcyBrZXB0IGFsaXZlIGJ5IHZtKSwgYnV0IGl0IHJlZnVzZXMgdG8gY29t
cGlsZSBvdGhlcndpc2UuCkBAIC0yNDAsNyArMjQ3LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIG5vZGUt
PnNldFJlc3VsdChOb2RlUmVzdWx0SW50MzIpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkgeworICAgICAgICAgICAgLy99IGVs
c2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKSB7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKG1fZ3JhcGgudW5hcnlBcml0aFNob3VsZFNwZWN1bGF0ZUludDUyKG5v
ZGUsIEZpeHVwUGFzcykpIHsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChvcCA9PSBJbmMg
PyBBcml0aEFkZCA6IEFyaXRoU3ViKTsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRBcml0aE1v
ZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOwogICAgICAgICAgICAgICAgIG5vZGVDb25zdGFudE9u
ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMkFz
SW50NTIsIEpTQ29uc3RhbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGpz
TnVtYmVyKDEpKSkpOwpAQCAtNDkxLDYgKzQ5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIFZhbHVlQWRkOiB7CisgICAgICAgICAgICAvL2RhdGFMb2dMbigiZml4dXAg
VmFsdWVBZGQ6ICIsIG5vZGUtPmluZGV4KCksICAiICAoIiwgU3BlY3VsYXRpb25EdW1wKG5vZGUt
PmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkpLCAiLCAiLCBTcGVjdWxhdGlvbkR1bXAobm9kZS0+Y2hp
bGQyKCktPnByZWRpY3Rpb24oKSksICIpIik7CiAgICAgICAgICAgICBpZiAoYXR0ZW1wdFRvTWFr
ZUludGVnZXJBZGQobm9kZSkpIHsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcChBcml0aEFk
ZCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04ODIsNyArODkxLDggQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKE5vZGU6
OnNob3VsZFNwZWN1bGF0ZUludDUyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hpbGQy
KCkubm9kZSgpKSkgeworICAgICAgICAgICAgLy9pZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50
NTIobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAg
ICAgICAgICBpZiAoaXNJbnRBbnlGb3JtYXQobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSkg
JiYgaXNJbnRBbnlGb3JtYXQobm9kZS0+Y2hpbGQyKCktPnByZWRpY3Rpb24oKSkpIHsKICAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAg
ICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CkBAIC0xMDI4LDYgKzEw
MzgsMjkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAogICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIEZvcmNl
T1NSRXhpdCwgbm9kZS0+b3JpZ2luKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYm9v
bCBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbiht
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLT5wcmVkaWN0aW9uKCkpCisgICAgICAgICAgICAg
ICAgJiYgaXNJbnRBbnlGb3JtYXQobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS0+cHJlZGlj
dGlvbigpKQorICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgSW50NTJPdmVyZmxvdykKKyAgICAgICAgICAgICAgICAmJiAhbV9ncmFw
aC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIE92ZXJmbG93KQorICAgICAgICAg
ICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSkgeworCisgICAgICAgICAg
ICAgICAgTm9kZSogaW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAg
ICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMyT25seSwgSW50NTJBc0ludDMyLCBu
b2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIEVkZ2UobV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAxKS5ub2RlKCksIEludDUyUmVwVXNlKSk7CisgICAgICAgICAgICAgICAgLy9pbmRl
eC0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKKworICAgICAgICAgICAgICAg
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkuc2V0Tm9kZShpbmRleCk7CisKKyAgICAgICAg
ICAgICAgICAvL2RhdGFMb2dMbigic3BlY3VsYXRpbmcgZ2V0Ynl2YWwiLCBTcGVjdWxhdGlvbkR1
bXAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS0+cHJlZGljdGlvbigpKSk7CisKKyAgICAg
ICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoU3RyaW5n
KG1fZ3JhcGgubV9jb2RlQmxvY2stPmluZmVycmVkTmFtZSgpLmRhdGEoKSkgPT0gImZhc3RVcGRh
dGVFZGdlc0NhY2hlIikgeworICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmhhc0V4aXRTaXRl
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpIHx8IG1fZ3JhcGguaGFzRXhpdFNpdGUo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBOZWdhdGl2ZVplcm8pKSB7CisgICAgICAgICAgICAgICAg
ICAgIC8vZGF0YUxvZ0xuKCJzcGVjdWxhdGlvbiBleGl0dGVkIik7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBub2RlLT5zZXRBcnJh
eU1vZGUoCiAgICAgICAgICAgICAgICAgbm9kZS0+YXJyYXlNb2RlKCkucmVmaW5lKApAQCAtMTAz
NSw2ICsxMDY4LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFy
QXJnQ2hpbGQobm9kZSwgMCktPnByZWRpY3Rpb24oKSwKICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS0+cHJlZGljdGlvbigpLAogICAgICAgICAgICAgICAg
ICAgICBTcGVjTm9uZSkpOworCisgICAgICAgICAgICBpZiAoY2hhbmdlZCkgeworICAgICAgICAg
ICAgICAgIC8vZGF0YUxvZ0xuKCJuZXcgYXJyYXkgbW9kZTogIiwgbm9kZS0+YXJyYXlNb2RlKCkp
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBibGVzc0FycmF5T3Bl
cmF0aW9uKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMSksIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOwogICAgICAgICAgICAgCkBA
IC0xMTcwLDYgKzEyMDcsMjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEVkZ2UmIGNoaWxkMiA9
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSk7CiAgICAgICAgICAgICBFZGdlJiBjaGlsZDMg
PSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIpOwogCisgICAgICAgICAgICBpZiAoIWlzSW50
MzJTcGVjdWxhdGlvbihjaGlsZDItPnByZWRpY3Rpb24oKSkKKyAgICAgICAgICAgICAgICAmJiBp
c0ludEFueUZvcm1hdChjaGlsZDItPnByZWRpY3Rpb24oKSkKKyAgICAgICAgICAgICAgICAvLyYm
IFN0cmluZyhtX2dyYXBoLm1fY29kZUJsb2NrLT5pbmZlcnJlZE5hbWUoKS5kYXRhKCkpID09ICJm
YXN0VXBkYXRlRWRnZXNDYWNoZSIKKyAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5oYXNFeGl0
U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIEludDUyT3ZlcmZsb3cpCisgICAgICAgICAgICAg
ICAgJiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxv
dykKKyAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkpIHsK
KworCisgICAgICAgICAgICAgICAgTm9kZSogaW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnRO
b2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMyT25seSwg
SW50NTJBc0ludDMyLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIEVkZ2UoY2hp
bGQyLm5vZGUoKSwgSW50NTJSZXBVc2UpKTsKKyAgICAgICAgICAgICAgICAvL2luZGV4LT5zZXRB
cml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOworCisgICAgICAgICAgICAgICAgY2hpbGQy
LnNldE5vZGUoaW5kZXgpOworCisgICAgICAgICAgICAgICAgLy9kYXRhTG9nTG4oInNwZWN1bGF0
aW5nIHB1dGJ5dmFsIiwgU3BlY3VsYXRpb25EdW1wKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MSktPnByZWRpY3Rpb24oKSkpOworCisgICAgICAgICAgICAgICAgLy9jaGFuZ2VkID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKAogICAgICAg
ICAgICAgICAgIG5vZGUtPmFycmF5TW9kZSgpLnJlZmluZSgKICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaCwgbm9kZSwKQEAgLTM3OTgsMTIgKzM4NTUsMTQgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAobV9ncmFw
aC5hZGRTaG91bGRTcGVjdWxhdGVJbnQ1Mihub2RlKSkgeworICAgICAgICBpZiAobV9ncmFwaC5i
aW5hcnlBcml0aG1ldGljU2hvdWxkU3BlY3VsYXRlSW50NTIobm9kZSkpIHsKICAgICAgICAgICAg
IGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGZpeEVk
Z2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIG5vZGUtPnNldEFy
aXRoTW9kZShBcml0aDo6Q2hlY2tPdmVyZmxvdyk7CiAgICAgICAgICAgICBub2RlLT5zZXRSZXN1
bHQoTm9kZVJlc3VsdEludDUyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgLy9kYXRhTG9nTG4oIk5vdCBzcGVjdWxhdGluZyBpbnQ1MiBh
ZGQ6ICIsIG5vZGUtPmluZGV4KCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1
cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2
aXNpb24gMjYxODE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4ODQsNiArMTg4NCw1OSBAQCB2b2lkIFByZWZpeDo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zCiAgICAgICAgIG91dC5wcmludGYoIiVzIiwgcHJlZml4U3Ry
KTsKIH0KIAorYm9vbCBHcmFwaDo6YmluYXJ5QXJpdGhtZXRpY1Nob3VsZFNwZWN1bGF0ZUludDUy
KE5vZGUqIGFkZCkKK3sKKyAgICBpZiAoIWVuYWJsZUludDUyKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBOb2RlKiBsZWZ0ID0gYWRkLT5jaGlsZDEoKS5ub2RlKCk7CisgICAg
Tm9kZSogcmlnaHQgPSBhZGQtPmNoaWxkMigpLm5vZGUoKTsKKworICAgIGlmIChoYXNFeGl0U2l0
ZShhZGQsIEludDUyT3ZlcmZsb3cpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50NTIobGVmdCwgcmlnaHQpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIGF1dG8gc2hvdWxkU3BlY3VsYXRlSW50NTJGb3JJbnB1dCA9IFtdIChOb2Rl
KiBub2RlKSB7CisgICAgICAgIC8vIFdoZW4gRG91YmxlQ29uc3RhbnQgbm9kZSBhcHBlYXJzLCBp
dCBtZWFucyB0aGF0IHVzZXJzIGV4cGxpY2l0bHkgd3JpdGUgYSBjb25zdGFudCBpbiB0aGVpciBj
b2RlIHdpdGggZG91YmxlIGZvcm0gaW5zdGVhZCBvZiBpbnRlZ2VyIGZvcm0gKDEuMCBpbnN0ZWFk
IG9mIDEpLgorICAgICAgICAvLyBJbiB0aGF0IGNhc2UsIHdlIHNob3VsZCBob25vciB0aGlzIGRl
Y2lzaW9uOiB1c2luZyBpdCBhcyBpbnRlZ2VyIGlzIG5vdCBhcHByb3ByaWF0ZS4KKyAgICAgICAg
aWYgKG5vZGUtPm9wKCkgPT0gRG91YmxlQ29uc3RhbnQpIHsKKyAgICAgICAgICAgIC8vZGF0YUxv
Z0xuKCJkb3VibGUgY29uc3RhbnQiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gaXNJbnRBbnlGb3JtYXQobm9kZS0+cHJlZGljdGlvbigpKTsK
KyAgICB9OworCisgICAgLy8gQWxsb3cgSW50NTIgYXJpdGhtZXRpYyBvbmx5IHdoZW4gdGhlIG9u
ZSBzaWRlIG9mIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNob3VsZCBiZSBzcGVjdWxhdGVkIEludDUy
LiBJdCBpcyBhIGJpdCBjb25zZXJ2YXRpdmUKKyAgICAvLyBkZWNpc2lvbi4gVGhpcyBpcyBiZWNh
dXNlIERvdWJsZSB0byBJbnQ1MiBjb252ZXJzaW9uIGlzIG5vdCBzbyBjaGVhcC4gRnJlcXVlbnQg
YmFjay1hbmQtZm9ydGggY29udmVyc2lvbnMgYmV0d2VlbiBEb3VibGUgYW5kIEludDUyCisgICAg
Ly8gcmF0aGVyIGh1cnQgdGhlIHBlcmZvcm1hbmNlLiBJZiB0aGUgb25lIHNpZGUgb2YgdGhlIG9w
ZXJhdGlvbiBpcyBhbHJlYWR5IEludDUyLCB0aGUgY29zdCBmb3IgY29uc3RydWN0aW5nIEFyaXRo
QWRkIGJlY29tZXMKKyAgICAvLyBjaGVhcCBzaW5jZSBvbmx5IG9uZSBEb3VibGUgdG8gSW50NTIg
Y29udmVyc2lvbiBjb3VsZCBiZSByZXF1aXJlZC4KKyAgICAvLyBUaGlzIHJlY292ZXJzIHNvbWUg
cmVncmVzc2lvbiBpbiBhc3NvcnRlZCB0ZXN0cyB3aGlsZSBrZWVwaW5nIGtyYWtlbiBjcnlwdG8g
aW1wcm92ZW1lbnRzLgorICAgIGlmICghbGVmdC0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSAmJiAh
cmlnaHQtPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGF1dG8gaGFzVXNlc0FzTnVtYmVyID0gW10gKE5vZGUqIG5vZGUpIHsKKyAgICAgICAgTm9k
ZUZsYWdzIGZsYWdzID0gbm9kZS0+ZmxhZ3MoKSAmIE5vZGVCeXRlY29kZUJhY2tQcm9wTWFzazsK
KyAgICAgICAgcmV0dXJuICEhKGZsYWdzICYgKE5vZGVCeXRlY29kZVVzZXNBc051bWJlciB8IE5v
ZGVCeXRlY29kZU5lZWRzTmVnWmVybyB8IE5vZGVCeXRlY29kZVVzZXNBc0ludCB8IE5vZGVCeXRl
Y29kZVVzZXNBc0FycmF5SW5kZXgpKTsKKyAgICB9OworCisgICAgLy8gV3JhcHBpbmcgSW50NTIg
dG8gVmFsdWUgaXMgYWxzbyBub3Qgc28gY2hlYXAuIFRodXMsIHdlIGFsbG93IEludDUyIGFkZGl0
aW9uIG9ubHkgd2hlbiB0aGUgbm9kZSBpcyB1c2VkIGFzIG51bWJlci4KKyAgICBpZiAoIWhhc1Vz
ZXNBc051bWJlcihhZGQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gc2hv
dWxkU3BlY3VsYXRlSW50NTJGb3JJbnB1dChsZWZ0KSAmJiBzaG91bGRTcGVjdWxhdGVJbnQ1MkZv
cklucHV0KHJpZ2h0KTsKK30KKworYm9vbCBHcmFwaDo6dW5hcnlBcml0aFNob3VsZFNwZWN1bGF0
ZUludDUyKE5vZGUqIG5vZGUsIFByZWRpY3Rpb25QYXNzIHBhc3MpCit7CisgICAgaWYgKCFlbmFi
bGVJbnQ1MigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlzSW50QW55Rm9y
bWF0KG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkpCisgICAgICAgICYmIG5vZGUtPmNhblNw
ZWN1bGF0ZUludDUyKHBhc3MpCisgICAgICAgICYmICFoYXNFeGl0U2l0ZShub2RlLCBJbnQ1Mk92
ZXJmbG93KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5B
QkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZp
c2lvbiAyNjE4MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzMCw3ICszMzAsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZGRTcGVjdWxhdGlvbk1vZGUoYWRkLCBwYXNzKSAhPSBEb250U3BlY3VsYXRlSW50MzI7CiAgICAg
fQogICAgIAotICAgIGJvb2wgYWRkU2hvdWxkU3BlY3VsYXRlSW50NTIoTm9kZSogYWRkKQorICAg
IGJvb2wgYmluYXJ5QXJpdGhtZXRpY1Nob3VsZFNwZWN1bGF0ZUludDUyKE5vZGUqIGFkZCk7Cisg
ICAgLyoKICAgICB7CiAgICAgICAgIGlmICghZW5hYmxlSW50NTIoKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTM3Myw2ICszNzQsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgcmV0dXJu
IHNob3VsZFNwZWN1bGF0ZUludDUyRm9yQWRkKGxlZnQpICYmIHNob3VsZFNwZWN1bGF0ZUludDUy
Rm9yQWRkKHJpZ2h0KTsKICAgICB9CisgICAgKi8KICAgICAKICAgICBib29sIGJpbmFyeUFyaXRo
U2hvdWxkU3BlY3VsYXRlSW50MzIoTm9kZSogbm9kZSwgUHJlZGljdGlvblBhc3MgcGFzcykKICAg
ICB7CkBAIC00MDIsNyArNDA0LDggQEAgcHVibGljOgogICAgICAgICAgICAgJiYgbm9kZS0+Y2Fu
U3BlY3VsYXRlSW50MzIocGFzcyk7CiAgICAgfQogICAgIAotICAgIGJvb2wgdW5hcnlBcml0aFNo
b3VsZFNwZWN1bGF0ZUludDUyKE5vZGUqIG5vZGUsIFByZWRpY3Rpb25QYXNzIHBhc3MpCisgICAg
Ym9vbCB1bmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlSW50NTIoTm9kZSogbm9kZSwgUHJlZGljdGlv
blBhc3MgcGFzcyk7CisgICAgLyoKICAgICB7CiAgICAgICAgIGlmICghZW5hYmxlSW50NTIoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQxMCw2ICs0MTMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAmJiBub2RlLT5jYW5TcGVjdWxhdGVJbnQ1MihwYXNzKQogICAgICAgICAgICAg
JiYgIWhhc0V4aXRTaXRlKG5vZGUsIEludDUyT3ZlcmZsb3cpOwogICAgIH0KKyAgICAqLwogCiAj
aWYgVVNFKEJJR0lOVDMyKQogICAgIGJvb2wgYmluYXJ5QXJpdGhTaG91bGRTcGVjdWxhdGVCaWdJ
bnQzMihOb2RlKiBub2RlLCBQcmVkaWN0aW9uUGFzcyBwYXNzKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjYxODE4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiAr
MTM5LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIFwKICAgICAvKiBB
dHRlbXB0IHRvIHRydW5jYXRlIGEgZG91YmxlIHRvIGludDMyOyB0aGlzIHdpbGwgZXhpdCBpZiBp
dCBjYW4ndCBkbyBpdC4gKi9cCiAgICAgbWFjcm8oRG91YmxlQXNJbnQzMiwgTm9kZVJlc3VsdElu
dDMyKSBcCisgICAgLyogQXR0ZW1wdCB0byB0cnVuY2F0ZSBhbiBJbnQ1MiB0byBpbnQzMjsgdGhp
cyB3aWxsIGV4aXQgaWYgaXQgY2FuJ3QgZG8gaXQuICovXAorICAgIG1hY3JvKEludDUyQXNJbnQz
MiwgTm9kZVJlc3VsdEludDMyKSBcCiAgICAgXAogICAgIC8qIENoYW5nZSB0aGUgcmVwcmVzZW50
YXRpb24gb2YgYSB2YWx1ZS4gKi9cCiAgICAgbWFjcm8oRG91YmxlUmVwLCBOb2RlUmVzdWx0RG91
YmxlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjYxODE4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICBi
b29sIHJ1bigpCiAgICAgeworICAgICAgICAvL2lmIChTdHJpbmcobV9ncmFwaC5tX2NvZGVCbG9j
ay0+aW5mZXJyZWROYW1lKCkuZGF0YSgpKSA9PSAiZmFzdFVwZGF0ZUVkZ2VzQ2FjaGUiKSB7Cisg
ICAgICAgIC8vICAgIG1fZ3JhcGguZHVtcCgpOworICAgICAgICAvL30KKwogICAgICAgICBBU1NF
UlQobV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFkZWRDUFMpOwogICAgICAgICBBU1NFUlQobV9ncmFw
aC5tX3VuaWZpY2F0aW9uU3RhdGUgPT0gR2xvYmFsbHlVbmlmaWVkKTsKIApAQCAtMTk2LDEzICsy
MDAsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBWYWx1ZUFkZDogewogICAgICAgICAgICAg
U3BlY3VsYXRlZFR5cGUgbGVmdCA9IG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCk7CiAgICAg
ICAgICAgICBTcGVjdWxhdGVkVHlwZSByaWdodCA9IG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9u
KCk7CisKKyAgICAgICAgICAgIC8vaWYgKFN0cmluZyhtX2dyYXBoLm1fY29kZUJsb2NrLT5pbmZl
cnJlZE5hbWUoKS5kYXRhKCkpID09ICJmYXN0VXBkYXRlRWRnZXNDYWNoZSIpIHsKKyAgICAgICAg
ICAgIC8vICAgIGRhdGFMb2dMbigiYWRkOiAiLCBub2RlLT5pbmRleCgpKTsKKyAgICAgICAgICAg
IC8vICAgIGRhdGFMb2dMbigibGVmdCA9ICIsIFNwZWN1bGF0aW9uRHVtcChsZWZ0KSk7CisgICAg
ICAgICAgICAvLyAgICBkYXRhTG9nTG4oInJpZ2h0ID0gIiwgU3BlY3VsYXRpb25EdW1wKHJpZ2h0
KSk7CisgICAgICAgICAgICAvLyAgICBkYXRhTG9nTG4oInNob3VsZCBzcGVjIGludDUyOiAiLCBt
X2dyYXBoLmJpbmFyeUFyaXRobWV0aWNTaG91bGRTcGVjdWxhdGVJbnQ1Mihub2RlKSk7CisgICAg
ICAgICAgICAvL30KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQp
IHsKICAgICAgICAgICAgICAgICBpZiAoaXNGdWxsTnVtYmVyT3JCb29sZWFuU3BlY3VsYXRpb25F
eHBlY3RpbmdEZWZpbmVkKGxlZnQpCiAgICAgICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJl
ck9yQm9vbGVhblNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChyaWdodCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fZ3JhcGguYWRkU3BlY3VsYXRpb25Nb2RlKG5vZGUsIG1fcGFzcykg
IT0gRG9udFNwZWN1bGF0ZUludDMyKQogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7Ci0gICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50NTIobm9kZSkpCisgICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKG1fZ3JhcGguYmluYXJ5QXJpdGhtZXRpY1Nob3VsZFNwZWN1bGF0
ZUludDUyKG5vZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVBy
ZWRpY3Rpb24oU3BlY0ludDUyQW55KTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oc3BlY3VsYXRlZERv
dWJsZVR5cGVGb3JQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpOwpAQCAtMjMyLDExICsyNDMsMTgg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBcml0aEFkZDogewogICAgICAgICAgICAgU3BlY3Vs
YXRlZFR5cGUgbGVmdCA9IG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAg
ICBTcGVjdWxhdGVkVHlwZSByaWdodCA9IG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCk7CisK
KyAgICAgICAgICAgIC8vaWYgKFN0cmluZyhtX2dyYXBoLm1fY29kZUJsb2NrLT5pbmZlcnJlZE5h
bWUoKS5kYXRhKCkpID09ICJmYXN0VXBkYXRlRWRnZXNDYWNoZSIpIHsKKyAgICAgICAgICAgIC8v
ICAgIGRhdGFMb2dMbigiYWRkOiAiLCBub2RlLT5pbmRleCgpKTsKKyAgICAgICAgICAgIC8vICAg
IGRhdGFMb2dMbigibGVmdCA9ICIsIFNwZWN1bGF0aW9uRHVtcChsZWZ0KSk7CisgICAgICAgICAg
ICAvLyAgICBkYXRhTG9nTG4oInJpZ2h0ID0gIiwgU3BlY3VsYXRpb25EdW1wKHJpZ2h0KSk7Cisg
ICAgICAgICAgICAvLyAgICBkYXRhTG9nTG4oInNob3VsZCBzcGVjIGludDUyOiAiLCBtX2dyYXBo
LmJpbmFyeUFyaXRobWV0aWNTaG91bGRTcGVjdWxhdGVJbnQ1Mihub2RlKSk7CisgICAgICAgICAg
ICAvL30KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKICAg
ICAgICAgICAgICAgICBpZiAobV9ncmFwaC5hZGRTcGVjdWxhdGlvbk1vZGUobm9kZSwgbV9wYXNz
KSAhPSBEb250U3BlY3VsYXRlSW50MzIpCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYg
KG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50NTIobm9kZSkpCisgICAgICAgICAgICAgICAg
ZWxzZSBpZiAobV9ncmFwaC5iaW5hcnlBcml0aG1ldGljU2hvdWxkU3BlY3VsYXRlSW50NTIobm9k
ZSkpCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJ
bnQ1MkFueSk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNGdWxsTnVtYmVyT3JCb29sZWFu
U3BlY3VsYXRpb24obGVmdCkgJiYgaXNGdWxsTnVtYmVyT3JCb29sZWFuU3BlY3VsYXRpb24ocmln
aHQpKQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihzcGVj
dWxhdGVkRG91YmxlVHlwZUZvclByZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSk7CkBAIC0yNTIsMTIg
KzI3MCwxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgbGVmdCA9IG5v
ZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBy
aWdodCA9IG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCk7CiAKKyAgICAgICAgICAgIC8vaWYg
KFN0cmluZyhtX2dyYXBoLm1fY29kZUJsb2NrLT5pbmZlcnJlZE5hbWUoKS5kYXRhKCkpID09ICJm
YXN0VXBkYXRlRWRnZXNDYWNoZSIpIHsKKyAgICAgICAgICAgIC8vICAgIGRhdGFMb2dMbigic3Vi
OiAiLCBub2RlLT5pbmRleCgpKTsKKyAgICAgICAgICAgIC8vICAgIGRhdGFMb2dMbigibGVmdCA9
ICIsIFNwZWN1bGF0aW9uRHVtcChsZWZ0KSk7CisgICAgICAgICAgICAvLyAgICBkYXRhTG9nTG4o
InJpZ2h0ID0gIiwgU3BlY3VsYXRpb25EdW1wKHJpZ2h0KSk7CisgICAgICAgICAgICAvL30KKwog
ICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKICAgICAgICAgICAgICAgICBpZiAoaXNG
dWxsTnVtYmVyT3JCb29sZWFuU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKGxlZnQpCiAgICAg
ICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJlck9yQm9vbGVhblNwZWN1bGF0aW9uRXhwZWN0
aW5nRGVmaW5lZChyaWdodCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguYWRk
U3BlY3VsYXRpb25Nb2RlKG5vZGUsIG1fcGFzcykgIT0gRG9udFNwZWN1bGF0ZUludDMyKQogICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMy
T25seSk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3Bl
Y3VsYXRlSW50NTIobm9kZSkpCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fZ3JhcGgu
YmluYXJ5QXJpdGhtZXRpY1Nob3VsZFNwZWN1bGF0ZUludDUyKG5vZGUpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDUyQW55KTsKICAg
ICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVByZWRpY3Rpb24oc3BlY3VsYXRlZERvdWJsZVR5cGVGb3JQcmVkaWN0aW9ucyhsZWZ0
LCByaWdodCkpOwpAQCAtMjczLDEyICsyOTcsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFNw
ZWN1bGF0ZWRUeXBlIGxlZnQgPSBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpOwogICAgICAg
ICAgICAgU3BlY3VsYXRlZFR5cGUgcmlnaHQgPSBub2RlLT5jaGlsZDIoKS0+cHJlZGljdGlvbigp
OwogCisgICAgICAgICAgICAvL2lmIChTdHJpbmcobV9ncmFwaC5tX2NvZGVCbG9jay0+aW5mZXJy
ZWROYW1lKCkuZGF0YSgpKSA9PSAiZmFzdFVwZGF0ZUVkZ2VzQ2FjaGUiKSB7CisgICAgICAgICAg
ICAvLyAgICBkYXRhTG9nTG4oInN1YjogIiwgbm9kZS0+aW5kZXgoKSk7CisgICAgICAgICAgICAv
LyAgICBkYXRhTG9nTG4oImxlZnQgPSAiLCBTcGVjdWxhdGlvbkR1bXAobGVmdCkpOworICAgICAg
ICAgICAgLy8gICAgZGF0YUxvZ0xuKCJyaWdodCA9ICIsIFNwZWN1bGF0aW9uRHVtcChyaWdodCkp
OworICAgICAgICAgICAgLy99CisKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0KSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGlzRnVsbE51bWJlck9yQm9vbGVhblNwZWN1bGF0aW9uRXhwZWN0
aW5nRGVmaW5lZChsZWZ0KQogICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJPckJv
b2xlYW5TcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQocmlnaHQpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLmFkZFNwZWN1bGF0aW9uTW9kZShub2RlLCBtX3Bhc3MpICE9IERv
bnRTcGVjdWxhdGVJbnQzMikKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
IChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZUludDUyKG5vZGUpKQorICAgICAgICAgICAgICAg
ICAgICBlbHNlIGlmIChtX2dyYXBoLmJpbmFyeUFyaXRobWV0aWNTaG91bGRTcGVjdWxhdGVJbnQ1
Mihub2RlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0
aW9uKFNwZWNJbnQ1MkFueSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHNwZWN1bGF0ZWREb3VibGVU
eXBlRm9yUHJlZGljdGlvbnMobGVmdCwgcmlnaHQpKTsKQEAgLTM4Niw2ICs0MTYsMTIgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBBcml0aE11bDogewogICAgICAgICAgICAgU3BlY3VsYXRlZFR5
cGUgbGVmdCA9IG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICBTcGVj
dWxhdGVkVHlwZSByaWdodCA9IG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCk7CisKKyAgICAg
ICAgICAgIC8vaWYgKFN0cmluZyhtX2dyYXBoLm1fY29kZUJsb2NrLT5pbmZlcnJlZE5hbWUoKS5k
YXRhKCkpID09ICJmYXN0VXBkYXRlRWRnZXNDYWNoZSIpIHsKKyAgICAgICAgICAgIC8vICAgIGRh
dGFMb2dMbigibXVsOiAiLCBub2RlLT5pbmRleCgpKTsKKyAgICAgICAgICAgIC8vICAgIGRhdGFM
b2dMbigibGVmdCA9ICIsIFNwZWN1bGF0aW9uRHVtcChsZWZ0KSk7CisgICAgICAgICAgICAvLyAg
ICBkYXRhTG9nTG4oInJpZ2h0ID0gIiwgU3BlY3VsYXRpb25EdW1wKHJpZ2h0KSk7CisgICAgICAg
ICAgICAvL30KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsK
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UncmUgY3VycmVudGx5IHJlbHlpbmcgb24gcHJl
ZGljdGlvbiBwcm9wYWdhdGlvbiBhbmQgYmFja3dhcmRzIHByb3BhZ2F0aW9uCkBAIC0zOTYsOCAr
NDMyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgJiYgaXNGdWxsTnVtYmVyT3JC
b29sZWFuU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKHJpZ2h0KSkgewogICAgICAgICAgICAg
ICAgICAgICBpZiAobV9ncmFwaC5iaW5hcnlBcml0aFNob3VsZFNwZWN1bGF0ZUludDMyKG5vZGUs
IG1fcGFzcykpCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGlj
dGlvbihTcGVjSW50MzJPbmx5KTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobV9ncmFw
aC5iaW5hcnlBcml0aFNob3VsZFNwZWN1bGF0ZUludDUyKG5vZGUsIG1fcGFzcykpCisgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKG1fZ3JhcGguYmluYXJ5QXJpdGhtZXRpY1Nob3VsZFNwZWN1
bGF0ZUludDUyKG5vZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlUHJlZGljdGlvbihTcGVjSW50NTJBbnkpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKHNwZWN1bGF0ZWREb3VibGVUeXBlRm9yUHJlZGljdGlvbnMobGVmdCwg
cmlnaHQpKTsKICAgICAgICAgICAgICAgICB9CkBAIC02NTYsMTMgKzY5MywxMyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIEFyaXRoU3ViOiB7CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBs
ZWZ0ID0gbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIFNwZWN1bGF0
ZWRUeXBlIHJpZ2h0ID0gbm9kZS0+Y2hpbGQyKCktPnByZWRpY3Rpb24oKTsKLSAgICAgICAgICAg
ICAgICAKKwogICAgICAgICAgICAgRG91YmxlQmFsbG90IGJhbGxvdDsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihsZWZ0KQogICAgICAg
ICAgICAgICAgICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKHJpZ2h0KQogICAgICAgICAgICAg
ICAgICYmICFtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZUludDMyKG5vZGUsIG1fcGFzcykKLSAg
ICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnQ1Mihub2RlKSkK
KyAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5iaW5hcnlBcml0aG1ldGljU2hvdWxkU3BlY3Vs
YXRlSW50NTIobm9kZSkpCiAgICAgICAgICAgICAgICAgYmFsbG90ID0gVm90ZURvdWJsZTsKICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWb3RlVmFsdWU7CkBAIC02
ODIsNyArNzE5LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVj
dWxhdGlvbihsZWZ0KQogICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9u
KHJpZ2h0KQogICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmJpbmFyeUFyaXRoU2hvdWxkU3Bl
Y3VsYXRlSW50MzIobm9kZSwgbV9wYXNzKQotICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmJp
bmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlSW50NTIobm9kZSwgbV9wYXNzKSkKKyAgICAgICAgICAg
ICAgICAvLyYmICFtX2dyYXBoLmJpbmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlSW50NTIobm9kZSwg
bV9wYXNzKQorICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmJpbmFyeUFyaXRobWV0aWNTaG91
bGRTcGVjdWxhdGVJbnQ1Mihub2RlKSkKICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWb3RlRG91
YmxlOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGJhbGxvdCA9IFZvdGVWYWx1
ZTsKQEAgLTEzMDAsNiArMTMzOCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgY2FzZSBQdXRCeVZh
bEFsaWFzOgogICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6CisgICAgICAgIGNhc2UgSW50NTJB
c0ludDMyOgogICAgICAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKICAgICAgICAgY2FzZSBB
cnJheWlmeToKICAgICAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDI2MTgx
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDgsNiArMjA4LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0
U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAgIGNhc2UgVUludDMyVG9O
dW1iZXI6CiAgICAgY2FzZSBEb3VibGVBc0ludDMyOgorICAgIGNhc2UgSW50NTJBc0ludDMyOgog
ICAgIGNhc2UgQXJpdGhBZGQ6CiAgICAgY2FzZSBBcml0aENsejMyOgogICAgIGNhc2UgQXJpdGhT
dWI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHJldmlzaW9uIDI2MTgxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNjUsNiArMjM2
NSwyNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgSW50NTJBc0ludDMyOiB7CisgICAgICAgIFNwZWN1
bGF0ZVN0cmljdEludDUyT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIAorICAgICAgICBHUFJSZWcg
dmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKworICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cih2YWx1ZUdQUiwgcmVz
dWx0R1BSKTsKKworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgSW50NTJP
dmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwKKyAgICAgICAgICAgIG1faml0LmJyYW5j
aDY0KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgdmFsdWVHUFIsIHJlc3VsdEdQUikpOworCisgICAg
ICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHJlc3VsdEdQUiwgcmVzdWx0R1BSKTsKKyAgICAg
ICAgc3RyaWN0SW50MzJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAgICAgY2FzZSBWYWx1ZVRvSW50MzI6IHsKICAgICAgICAgY29tcGlsZVZhbHVlVG9J
bnQzMihub2RlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNjE4MTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY5LDYgKzY5LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAog
ICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZU9yRW1wdHk6
CiAgICAgY2FzZSBEb3VibGVBc0ludDMyOgorICAgIGNhc2UgSW50NTJBc0ludDMyOgogICAgIGNh
c2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNhc2UgUHV0
U3RydWN0dXJlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkocmV2aXNpb24gMjYxODE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1LDEwIEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICBtX2Z0bFN0YXRlLmppdENvZGUtPmNvbW1vbi5jYXRj
aE9TUkVudHJ5QnVmZmVyID0gbV9ncmFwaC5tX3ZtLnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNpemVv
ZihKU1ZhbHVlKSAqIG51bWJlck9mTGl2ZUxvY2Fscyk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KKworICAgICAgICBpZiAoU3RyaW5nKG1fZ3JhcGgubV9jb2RlQmxvY2stPmluZmVycmVkTmFt
ZSgpLmRhdGEoKSkgPT0gImZhc3RVcGRhdGVFZGdlc0NhY2hlIikgeworICAgICAgICAgICAgbV9n
cmFwaC5kdW1wKCk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGguZW5zdXJl
U1NBRG9taW5hdG9ycygpOwogCkBAIC03MzEsNiArNzM1LDkgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBEb3VibGVBc0ludDMyOgogICAgICAgICAgICAgY29tcGlsZURvdWJsZUFzSW50MzIoKTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEludDUyQXNJbnQzMjoKKyAgICAgICAg
ICAgIGNvbXBpbGVJbnQ1MkFzSW50MzIoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIERGRzo6VmFsdWVSZXA6CiAgICAgICAgICAgICBjb21waWxlVmFsdWVSZXAoKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTg4Niw2ICsxODkzLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIHNl
dEludDMyKGludGVnZXJWYWx1ZSk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlSW50NTJBc0lu
dDMyKCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBpbnQ1MlZhbHVlID0gbG93U3RyaWN0SW50NTIo
bV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSBpbnQzMlZhbHVlID0gbV9vdXQuY2Fz
dFRvSW50MzIoaW50NTJWYWx1ZSk7CisgICAgICAgIExWYWx1ZSBpbnQ2NFZhbHVlID0gbV9vdXQu
c2lnbkV4dDMyVG82NChpbnQzMlZhbHVlKTsKKyAgICAgICAgc3BlY3VsYXRlKEludDUyT3ZlcmZs
b3csIG5vVmFsdWUoKSwgbV9ncmFwaC5tZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKG1f
bm9kZSwgbV9ub2RlLT5jaGlsZDEoKS5ub2RlKCkpLCBtX291dC5ub3RFcXVhbChpbnQ2NFZhbHVl
LCBpbnQ1MlZhbHVlKSk7CisgICAgICAgIHNldEludDMyKGludDMyVmFsdWUpOworICAgIH0KKwog
ICAgIHZvaWQgY29tcGlsZVZhbHVlUmVwKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9ub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399678</attachid>
            <date>2020-05-18 15:33:02 -0700</date>
            <delta_ts>2020-05-18 15:43:25 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>4392</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYxODMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDIwLTA1LTE4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IERvIG1vcmUgc3BlY3VsYXRpb24gdGhhdCBhIEdldEJ5VmFsL1B1dEJ5VmFsIHdpbGwgaGF2ZSBh
biBpbnQzMiBpbmRleCBiYXNlZCBvbiBkYXRhIGZyb20gQXJyYXlQcm9maWxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE4NzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwg
d2hlbiBhIEdldEJ5VmFsIG9yIFB1dEJ5VmFsIGhhZCBhIG5vbiBpbnQzMiBwcmVkaWN0aW9uIGZv
cgorICAgICAgICB0aGVpciBpbmNvbWluZyBpbmRleCwgdGhleSdkIGZhbGwgY29tcGxldGVseSBv
ZmYgdGhlIGZhc3QgcGF0aC4gSG93ZXZlciwgdGhlcmUKKyAgICAgICAgYXJlIHByb2dyYW1zIHdo
ZXJlIGFuIGludDMyIGlzIGJveGVkIGluc2lkZSBhIGRvdWJsZSwgYnV0IG91ciBub3Rpb24gb2YK
KyAgICAgICAgcHJlZGljdGVkIHR5cGVzIGRvbid0IGZ1bGx5IGNhcHR1cmUgdGhpcyBmYWN0LiBG
b3IgZXhhbXBsZSwgaWYgd2UgaGF2ZSBhIGRvdWJsZSBBZGQKKyAgICAgICAgdG8gcHJvZHVjZSBh
biBhcnJheSBpbmRleCwgdGhhdCBkb3VibGUgQWRkIHdpbGwgcHJlZGljdCBhIGZ1bGwgZG91Ymxl
IHJlc3VsdCwKKyAgICAgICAgbm90IGEgU3BlY0FueUludEFzRG91YmxlLiBIb3dldmVyLCBmb3Ig
R2V0QnlWYWwgYW5kIFB1dEJ5VmFsLCB0aGVyZSBpcyBpbmZvcm1hdGlvbgorICAgICAgICBmcm9t
IEFycmF5UHJvZmlsZSB3ZSBjYW4gdXNlIHRvIGRldGVybWluZSBpZiB0aGUgaW5jb21pbmcgdmFs
dWUgaXMgZXhwZWN0ZWQgdG8KKyAgICAgICAgYmUgaW4gaW50MzIgcmFuZ2UuIFRoZSBoZXVyaXN0
aWMgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGlzOgorICAgICAgICAKKyAgICAgICAgaXNGdWxsTnVt
YmVyU3BlY3VsYXRpb24oaW5kZXhTcGVjdWxhdGlvbikKKyAgICAgICAgJiYgbm9kZS0+YXJyYXlN
b2RlKCkuaXNTcGVjaWZpYygpCisgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3Vu
ZHMoKQorICAgICAgICAmJiAhbV9ncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50
aWMsIE92ZXJmbG93KSAvLyBEb3VibGVBc0ludDMyIHdpbGwgZXhpdCB3aXRoIE92ZXJmbG93IG9u
IGZhaWx1cmUKKyAgICAgICAgCisgICAgICAgIElmIHRoZXNlIGNvbmRpdGlvbnMgYXJlIG1ldCwg
d2UnbGwgbm93IGVtaXQgYSBEb3VibGVBc0ludDMyIGNvbnZlcnNpb24gbm9kZQorICAgICAgICBm
b3IgdGhlIGluZGV4LiBUaGlzIHB1dHMgYWxvbmcgdGhlIGZhc3QgcGF0aCBmb3IgR2V0QnlWYWwg
YW5kIFB1dEJ5VmFsIG9uCisgICAgICAgIGFycmF5IGFjY2Vzc2VzIHdoZXJlIHRoZSBpbmNvbWlu
ZyBpbmRleCBpcyBhbiBpbnQzMiBib3hlZCBpbiBhIGRvdWJsZS4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgaXMgYSAzLjc1eCBzcGVlZHVwIG9uIG1pY3JvYmVuY2htYXJrcy9nZXQtYW5kLXB1dC1i
eS12YWwtZG91YmxlLWluZGV4LWRvbnQtZmFsbC1vZmYtYS1jbGlmZi5qcworCisgICAgICAgICog
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZp
eHVwTm9kZSk6CisKIDIwMjAtMDUtMTggIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgT1NSIGxvb3AgZW50cnkgdG8gaXRlcmF0b3JfbmV4dCBnZW5lcmlj
IG5lZWRzIHRvIENoZWNrTm90RW1wdHkgb24gbV9uZXh0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDI2MTc1MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMzAsNiArMTAzMCwyMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVj
Tm9uZSwgRm9yY2VPU1JFeGl0LCBub2RlLT5vcmlnaW4pOwogICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgYXV0byBpbmRleFNwZWN1bGF0aW9uID0gbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAxKS0+cHJlZGljdGlvbigpOworICAgICAgICAgICAgICAgIGlm
ICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRpb24pIAorICAgICAgICAgICAgICAg
ICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQorICAgICAg
ICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKKyAgICAgICAg
ICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAgICAgICAg
ICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
T3ZlcmZsb3cpKSB7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2lu
c2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNJbnQzMk9ubHksIERvdWJsZUFzSW50MzIsIG5vZGUtPm9yaWdpbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEVkZ2UobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS5ub2Rl
KCksIERvdWJsZVJlcFVzZSkpOworICAgICAgICAgICAgICAgICAgICBuZXdJbmRleC0+c2V0QXJp
dGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAxKS5zZXROb2RlKG5ld0luZGV4KTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgbm9kZS0+c2V0QXJyYXlNb2RlKAogICAgICAgICAgICAgICAgIG5vZGUtPmFycmF5TW9kZSgp
LnJlZmluZSgKQEAgLTExNzIsNiArMTE4OSwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgRWRn
ZSYgY2hpbGQyID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKTsKICAgICAgICAgICAgIEVk
Z2UmIGNoaWxkMyA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMik7CiAKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBhdXRvIGluZGV4U3BlY3VsYXRpb24gPSBjaGlsZDItPnByZWRp
Y3Rpb24oKTsKKyAgICAgICAgICAgICAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihpbmRleFNw
ZWN1bGF0aW9uKSAKKyAgICAgICAgICAgICAgICAgICAgJiYgaXNGdWxsTnVtYmVyU3BlY3VsYXRp
b24oaW5kZXhTcGVjdWxhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlN
b2RlKCkuaXNTcGVjaWZpYygpCisgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmFycmF5TW9k
ZSgpLmlzSW5Cb3VuZHMoKQorICAgICAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5oYXNFeGl0
U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50aWMsIE92ZXJmbG93KSkgeworCisgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIG5ld0luZGV4ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzJPbmx5LCBEb3VibGVB
c0ludDMyLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBFZGdlKGNoaWxk
Mi5ub2RlKCksIERvdWJsZVJlcFVzZSkpOworICAgICAgICAgICAgICAgICAgICBuZXdJbmRleC0+
c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93KTsKKyAgICAgICAgICAgICAgICAgICAg
Y2hpbGQyLnNldE5vZGUobmV3SW5kZXgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKwogICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKAogICAgICAgICAgICAgICAgIG5v
ZGUtPmFycmF5TW9kZSgpLnJlZmluZSgKICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgbm9k
ZSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399679</attachid>
            <date>2020-05-18 15:43:25 -0700</date>
            <delta_ts>2020-05-18 15:56:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>4376</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYxODM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDIwLTA1LTE4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IERvIG1vcmUgc3BlY3VsYXRpb24gdGhhdCBhIEdldEJ5VmFsL1B1dEJ5VmFsIHdpbGwgaGF2ZSBh
biBpbnQzMiBpbmRleCBiYXNlZCBvbiBkYXRhIGZyb20gQXJyYXlQcm9maWxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE4NzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwg
d2hlbiBhIEdldEJ5VmFsIG9yIFB1dEJ5VmFsIGhhZCBhIG5vbiBpbnQzMiBwcmVkaWN0aW9uIGZv
cgorICAgICAgICB0aGVpciBpbmNvbWluZyBpbmRleCwgdGhleSdkIGZhbGwgY29tcGxldGVseSBv
ZmYgdGhlIGZhc3QgcGF0aC4gSG93ZXZlciwgdGhlcmUKKyAgICAgICAgYXJlIHByb2dyYW1zIHdo
ZXJlIGFuIGludDMyIGlzIGJveGVkIGluc2lkZSBhIGRvdWJsZSwgYnV0IG91ciBub3Rpb24gb2YK
KyAgICAgICAgcHJlZGljdGVkIHR5cGVzIGRvbid0IGZ1bGx5IGNhcHR1cmUgdGhpcyBmYWN0LiBG
b3IgZXhhbXBsZSwgaWYgd2UgaGF2ZSBhIGRvdWJsZSBBZGQKKyAgICAgICAgdG8gcHJvZHVjZSBh
biBhcnJheSBpbmRleCwgdGhhdCBkb3VibGUgQWRkIHdpbGwgcHJlZGljdCBhIGZ1bGwgZG91Ymxl
IHJlc3VsdCwKKyAgICAgICAgbm90IGEgU3BlY0FueUludEFzRG91YmxlLiBIb3dldmVyLCBmb3Ig
R2V0QnlWYWwgYW5kIFB1dEJ5VmFsLCB0aGVyZSBpcyBpbmZvcm1hdGlvbgorICAgICAgICBmcm9t
IEFycmF5UHJvZmlsZSB3ZSBjYW4gdXNlIHRvIGRldGVybWluZSBpZiB0aGUgaW5jb21pbmcgdmFs
dWUgaXMgZXhwZWN0ZWQgdG8KKyAgICAgICAgYmUgaW4gaW50MzIgcmFuZ2UuIFRoZSBoZXVyaXN0
aWMgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGlzOgorICAgICAgICAKKyAgICAgICAgaXNGdWxsTnVt
YmVyU3BlY3VsYXRpb24oaW5kZXhTcGVjdWxhdGlvbikKKyAgICAgICAgJiYgbm9kZS0+YXJyYXlN
b2RlKCkuaXNTcGVjaWZpYygpCisgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3Vu
ZHMoKQorICAgICAgICAmJiAhbV9ncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50
aWMsIE92ZXJmbG93KSAvLyBEb3VibGVBc0ludDMyIHdpbGwgZXhpdCB3aXRoIE92ZXJmbG93IG9u
IGZhaWx1cmUKKyAgICAgICAgCisgICAgICAgIElmIHRoZXNlIGNvbmRpdGlvbnMgYXJlIG1ldCwg
d2UnbGwgbm93IGVtaXQgYSBEb3VibGVBc0ludDMyIGNvbnZlcnNpb24gbm9kZQorICAgICAgICBm
b3IgdGhlIGluZGV4LiBUaGlzIHB1dHMgYWxvbmcgdGhlIGZhc3QgcGF0aCBmb3IgR2V0QnlWYWwg
YW5kIFB1dEJ5VmFsIG9uCisgICAgICAgIGFycmF5IGFjY2Vzc2VzIHdoZXJlIHRoZSBpbmNvbWlu
ZyBpbmRleCBpcyBhbiBpbnQzMiBib3hlZCBpbiBhIGRvdWJsZS4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgaXMgYSAzLjc1eCBzcGVlZHVwIG9uIG1pY3JvYmVuY2htYXJrcy9nZXQtYW5kLXB1dC1i
eS12YWwtZG91YmxlLWluZGV4LWRvbnQtZmFsbC1vZmYtYS1jbGlmZi5qcworCisgICAgICAgICog
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZp
eHVwTm9kZSk6CisKIDIwMjAtMDUtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBCaWdJbnQgcGVlcGhvbGUgY29tcGFyZSBzaG91bGQgc3BlY3Vs
YXRlIGFwcHJvcHJpYXRlbHkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjYxODM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyOCw2ICsxMDI4LDIz
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
ICAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBGb3JjZU9TUkV4
aXQsIG5vZGUtPm9yaWdpbik7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBhdXRvIGluZGV4U3BlY3VsYXRpb24gPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDEpLT5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICAgICAgaWYgKCFpc0ludDMyU3BlY3Vs
YXRpb24oaW5kZXhTcGVjdWxhdGlvbikgCisgICAgICAgICAgICAgICAgICAgICYmIGlzRnVsbE51
bWJlclNwZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRpb24pCisgICAgICAgICAgICAgICAgICAgICYm
IG5vZGUtPmFycmF5TW9kZSgpLmlzU3BlY2lmaWMoKQorICAgICAgICAgICAgICAgICAgICAmJiBu
b2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgIW1f
Z3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBPdmVyZmxvdykpIHsKKwor
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBuZXdJbmRleCA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMy
T25seSwgRG91YmxlQXNJbnQzMiwgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAg
ICAgRWRnZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLm5vZGUoKSwgRG91YmxlUmVwVXNl
KSk7CisgICAgICAgICAgICAgICAgICAgIG5ld0luZGV4LT5zZXRBcml0aE1vZGUoQXJpdGg6OkNo
ZWNrT3ZlcmZsb3cpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDEpLnNldE5vZGUobmV3SW5kZXgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgCiAgICAgICAgICAgICBub2RlLT5zZXRBcnJh
eU1vZGUoCiAgICAgICAgICAgICAgICAgbm9kZS0+YXJyYXlNb2RlKCkucmVmaW5lKApAQCAtMTE3
MCw2ICsxMTg3LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBFZGdlJiBjaGlsZDIgPSBtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpOwogICAgICAgICAgICAgRWRnZSYgY2hpbGQzID0gbV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAyKTsKIAorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGF1dG8gaW5kZXhTcGVjdWxhdGlvbiA9IGNoaWxkMi0+cHJlZGljdGlvbigpOworICAgICAg
ICAgICAgICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRpb24pIAorICAg
ICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihpbmRleFNwZWN1bGF0
aW9uKQorICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc1NwZWNpZmlj
KCkKKyAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygp
CisgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogbmV3
SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMk9ubHksIERvdWJsZUFzSW50MzIsIG5vZGUtPm9y
aWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UoY2hpbGQyLm5vZGUoKSwgRG91Ymxl
UmVwVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIG5ld0luZGV4LT5zZXRBcml0aE1vZGUoQXJp
dGg6OkNoZWNrT3ZlcmZsb3cpOworICAgICAgICAgICAgICAgICAgICBjaGlsZDIuc2V0Tm9kZShu
ZXdJbmRleCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCiAgICAgICAgICAg
ICBub2RlLT5zZXRBcnJheU1vZGUoCiAgICAgICAgICAgICAgICAgbm9kZS0+YXJyYXlNb2RlKCku
cmVmaW5lKAogICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLCBub2RlLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399680</attachid>
            <date>2020-05-18 15:56:00 -0700</date>
            <delta_ts>2020-05-18 18:17:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>5753</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYxODM2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDIwLTA1LTE4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IERvIG1vcmUgc3BlY3VsYXRpb24gdGhhdCBhIEdldEJ5VmFsL1B1dEJ5VmFsIHdpbGwgaGF2ZSBh
biBpbnQzMiBpbmRleCBiYXNlZCBvbiBkYXRhIGZyb20gQXJyYXlQcm9maWxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE4NzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwg
d2hlbiBhIEdldEJ5VmFsIG9yIFB1dEJ5VmFsIGhhZCBhIG5vbiBpbnQzMiBwcmVkaWN0aW9uIGZv
cgorICAgICAgICB0aGVpciBpbmNvbWluZyBpbmRleCwgdGhleSdkIGZhbGwgY29tcGxldGVseSBv
ZmYgdGhlIGZhc3QgcGF0aC4gSG93ZXZlciwgdGhlcmUKKyAgICAgICAgYXJlIHByb2dyYW1zIHdo
ZXJlIGFuIGludDMyIGlzIGJveGVkIGluc2lkZSBhIGRvdWJsZSwgYnV0IG91ciBub3Rpb24gb2YK
KyAgICAgICAgcHJlZGljdGVkIHR5cGVzIGRvbid0IGZ1bGx5IGNhcHR1cmUgdGhpcyBmYWN0LiBG
b3IgZXhhbXBsZSwgaWYgd2UgaGF2ZSBhIGRvdWJsZSBBZGQKKyAgICAgICAgdG8gcHJvZHVjZSBh
biBhcnJheSBpbmRleCwgdGhhdCBkb3VibGUgQWRkIHdpbGwgcHJlZGljdCBhIGZ1bGwgZG91Ymxl
IHJlc3VsdCwKKyAgICAgICAgbm90IGEgU3BlY0FueUludEFzRG91YmxlLiBIb3dldmVyLCBmb3Ig
R2V0QnlWYWwgYW5kIFB1dEJ5VmFsLCB0aGVyZSBpcyBpbmZvcm1hdGlvbgorICAgICAgICBmcm9t
IEFycmF5UHJvZmlsZSB3ZSBjYW4gdXNlIHRvIGRldGVybWluZSBpZiB0aGUgaW5jb21pbmcgdmFs
dWUgaXMgZXhwZWN0ZWQgdG8KKyAgICAgICAgYmUgaW4gaW50MzIgcmFuZ2UuIFRoZSBoZXVyaXN0
aWMgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGlzOgorICAgICAgICAKKyAgICAgICAgaXNGdWxsTnVt
YmVyU3BlY3VsYXRpb24oaW5kZXhTcGVjdWxhdGlvbikKKyAgICAgICAgJiYgbm9kZS0+YXJyYXlN
b2RlKCkuaXNTcGVjaWZpYygpCisgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3Vu
ZHMoKQorICAgICAgICAmJiAhbV9ncmFwaC5oYXNFeGl0U2l0ZShub2RlLT5vcmlnaW4uc2VtYW50
aWMsIE92ZXJmbG93KSAvLyBEb3VibGVBc0ludDMyIHdpbGwgZXhpdCB3aXRoIE92ZXJmbG93IG9u
IGZhaWx1cmUKKyAgICAgICAgCisgICAgICAgIElmIHRoZXNlIGNvbmRpdGlvbnMgYXJlIG1ldCwg
d2UnbGwgbm93IGVtaXQgYSBEb3VibGVBc0ludDMyIGNvbnZlcnNpb24gbm9kZQorICAgICAgICBm
b3IgdGhlIGluZGV4LiBUaGlzIHB1dHMgYWxvbmcgdGhlIGZhc3QgcGF0aCBmb3IgR2V0QnlWYWwg
YW5kIFB1dEJ5VmFsIG9uCisgICAgICAgIGFycmF5IGFjY2Vzc2VzIHdoZXJlIHRoZSBpbmNvbWlu
ZyBpbmRleCBpcyBhbiBpbnQzMiBib3hlZCBpbiBhIGRvdWJsZS4KKyAgICAgICAgCisgICAgICAg
IFRvIG1ha2UgdGhlIGFib3ZlIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uIGNoZWNrIG1vcmUgcm9i
dXN0LCB0aGlzIHBhdGNoIGFsc28KKyAgICAgICAgbWFrZXMgaXQgc28gbm9uIGluZGV4IGRvdWJs
ZSBhY2Nlc3NlcyByZXN1bHQgaW4gbWFya2luZyB0aGUgYXJyYXkgcHJvZmlsZSBhcworICAgICAg
ICBvdXQgb2YgYm91bmRzLiBTbyB0aGlzIG1lYW5zIGluZGljZXMgZ3JlYXRlciB0aGFuIG1heCBz
YWZlIGluZGV4LCBhbmQgYWxzbywKKyAgICAgICAgZnJhY3Rpb25hbCBkb3VibGVzLgorICAgICAg
ICAKKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYSAzLjc1eCBzcGVlZHVwIG9uIG1pY3JvYmVu
Y2htYXJrcy9nZXQtYW5kLXB1dC1ieS12YWwtZG91YmxlLWluZGV4LWRvbnQtZmFsbC1vZmYtYS1j
bGlmZi5qcworCisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAoSlNDOjpnZXRCeVZhbCk6CisKIDIwMjAtMDUtMTggIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBCaWdJbnQgcGVlcGhv
bGUgY29tcGFyZSBzaG91bGQgc3BlY3VsYXRlIGFwcHJvcHJpYXRlbHkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjYxODM1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAyOCw2ICsxMDI4LDIzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxv
Y2ssIFNwZWNOb25lLCBGb3JjZU9TUkV4aXQsIG5vZGUtPm9yaWdpbik7CiAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBhdXRvIGluZGV4U3BlY3VsYXRpb24g
PSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLT5wcmVkaWN0aW9uKCk7CisgICAgICAgICAg
ICAgICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24oaW5kZXhTcGVjdWxhdGlvbikgCisgICAgICAg
ICAgICAgICAgICAgICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9uKGluZGV4U3BlY3VsYXRpb24p
CisgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmFycmF5TW9kZSgpLmlzU3BlY2lmaWMoKQor
ICAgICAgICAgICAgICAgICAgICAmJiBub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkKKyAg
ICAgICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBPdmVyZmxvdykpIHsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBuZXdJbmRl
eCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBt
X2luZGV4SW5CbG9jaywgU3BlY0ludDMyT25seSwgRG91YmxlQXNJbnQzMiwgbm9kZS0+b3JpZ2lu
LAorICAgICAgICAgICAgICAgICAgICAgICAgRWRnZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDEpLm5vZGUoKSwgRG91YmxlUmVwVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIG5ld0luZGV4
LT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOworICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLnNldE5vZGUobmV3SW5kZXgpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUoCiAgICAgICAgICAgICAgICAgbm9kZS0+YXJy
YXlNb2RlKCkucmVmaW5lKApAQCAtMTE3MCw2ICsxMTg3LDIyIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBFZGdlJiBjaGlsZDIgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpOwogICAgICAg
ICAgICAgRWRnZSYgY2hpbGQzID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKTsKIAorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGF1dG8gaW5kZXhTcGVjdWxhdGlvbiA9IGNoaWxk
Mi0+cHJlZGljdGlvbigpOworICAgICAgICAgICAgICAgIGlmICghaXNJbnQzMlNwZWN1bGF0aW9u
KGluZGV4U3BlY3VsYXRpb24pIAorICAgICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJT
cGVjdWxhdGlvbihpbmRleFNwZWN1bGF0aW9uKQorICAgICAgICAgICAgICAgICAgICAmJiBub2Rl
LT5hcnJheU1vZGUoKS5pc1NwZWNpZmljKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS0+
YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpCisgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBo
Lmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpKSB7CisKKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogbmV3SW5kZXggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMk9ubHks
IERvdWJsZUFzSW50MzIsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEVk
Z2UoY2hpbGQyLm5vZGUoKSwgRG91YmxlUmVwVXNlKSk7CisgICAgICAgICAgICAgICAgICAgIG5l
d0luZGV4LT5zZXRBcml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOworICAgICAgICAgICAg
ICAgICAgICBjaGlsZDIuc2V0Tm9kZShuZXdJbmRleCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCiAgICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUoCiAgICAgICAgICAg
ICAgICAgbm9kZS0+YXJyYXlNb2RlKCkucmVmaW5lKAogICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLCBub2RlLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCShyZXZpc2lvbiAyNjE4MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjEsNyArNzIxLDcgQEAgc3RhdGlj
IHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgICAgICBiYXNlVmFsdWUucHV0
QnlJbmRleChnbG9iYWxPYmplY3QsIGksIHZhbHVlLCBlY21hTW9kZS5pc1N0cmljdCgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0gCi0gICAgaWYgKHN1YnNjcmlwdC5pc0ludDMyKCkpIHsKKyAg
ICBpZiAoc3Vic2NyaXB0LmlzTnVtYmVyKCkpIHsKICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xv
d1BhdGggPSB0cnVlOwogICAgICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAg
ICAgICBieVZhbEluZm8tPmFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKQEAgLTE5NzYs
NyArMTk3Niw4IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWwoSlMKIAog
ICAgICAgICBpZiAoaSA+PSAwKQogICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpKSk7
Ci0gICAgfQorICAgIH0gZWxzZSBpZiAoc3Vic2NyaXB0LmlzTnVtYmVyKCkgJiYgYmFzZVZhbHVl
LmlzQ2VsbCgpICYmIGFycmF5UHJvZmlsZSkKKyAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRP
ZkJvdW5kcygpOwogCiAgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZ2xvYmFs
T2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>