<?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>167743</bug_id>
          
          <creation_ts>2017-02-02 10:39:28 -0800</creation_ts>
          <short_desc>Rename Node::inDocument() to isConnected()</short_desc>
          <delta_ts>2017-02-02 13:30:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>https://dom.spec.whatwg.org/#connected</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1272522</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-02 10:39:28 -0800</bug_when>
    <thetext>Rename Node::inDocument() to isConnected() to match the DOM specification more closely:
- https://dom.spec.whatwg.org/#connected</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272563</commentid>
    <comment_count>1</comment_count>
      <attachid>300427</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-02 11:49:43 -0800</bug_when>
    <thetext>Created attachment 300427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272576</commentid>
    <comment_count>2</comment_count>
      <attachid>300432</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-02 12:27:17 -0800</bug_when>
    <thetext>Created attachment 300432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272591</commentid>
    <comment_count>3</comment_count>
      <attachid>300432</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-02-02 12:57:49 -0800</bug_when>
    <thetext>Comment on attachment 300432
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272617</commentid>
    <comment_count>4</comment_count>
      <attachid>300432</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-02 13:30:43 -0800</bug_when>
    <thetext>Comment on attachment 300432
Patch

Clearing flags on attachment: 300432

Committed r211591: &lt;http://trac.webkit.org/changeset/211591&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272618</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-02 13:30:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300427</attachid>
            <date>2017-02-02 11:49:43 -0800</date>
            <delta_ts>2017-02-02 12:27:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167743-20170202114728.patch</filename>
            <type>text/plain</type>
            <size>134236</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExNTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIxOTViM2UwYzFjYzYy
ODEwMzI2MmFmN2NiM2VmN2JlZmY2NTUxNi4uYTgyYWM3NTA2YmRhOWNkM2M0OTRjZGQxNTUyOTY1
YmY5MTVjNWE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTAyLTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIE5vZGU6OmluRG9j
dW1lbnQoKSB0byBpc0Nvbm5lY3RlZCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjc3NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW5hbWUgTm9kZTo6aW5Eb2N1bWVudCgpIHRvIGlzQ29ubmVjdGVk
KCkgdG8gbWF0Y2ggdGhlIERPTSBzcGVjaWZpY2F0aW9uIG1vcmUgY2xvc2VseToKKyAgICAgICAg
LSBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2Nvbm5lY3RlZAorCiAyMDE3LTAyLTAyICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBDb2x1bW4gcHJvZ3Jl
c3Npb24gd3JvbmcgYWZ0ZXIgZW5hYmxpbmcgcGFnaW5hdGlvbiBvbiBSVEwgZG9jdW1lbnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwppbmRleCBmY2QyNmQwZjQ5ODRmNTZmNDk1ZTEyZTE5YTg4OWNjZDJhZjBkM2M2
Li5mMWI0NGI0NDdiNTQ5MmY4ODVjMTIyNzUwNjZiZmVhZWM1MWQzOTliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDItMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgTm9kZTo6aW5Eb2N1bWVudCgpIHRvIGlzQ29ubmVj
dGVkKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
Nzc0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bmFtZSBOb2RlOjppbkRvY3VtZW50KCkgdG8gaXNDb25uZWN0ZWQoKSB0byBtYXRjaCB0aGUgRE9N
IHNwZWNpZmljYXRpb24gbW9yZSBjbG9zZWx5OgorICAgICAgICAtIGh0dHBzOi8vZG9tLnNwZWMu
d2hhdHdnLm9yZy8jY29ubmVjdGVkCisKKyAgICAgICAgKiBET00vRE9NTm9kZS5tbToKKyAgICAg
ICAgKC1bRE9NTm9kZSBpc0Nvbm5lY3RlZF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUu
bW06CisgICAgICAgICgtW1dlYkZyYW1lIHNlbGVjdE5TUmFuZ2U6b25FbGVtZW50Ol0pOgorCiAy
MDE3LTAyLTAyICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgSW4gaU9TLCB3ZSBzaG91bGQgdGFrZSBiYWNrZ3JvdW5kIGFzc2VydGlvbiB3aGVuIGFj
Y2Vzc2luZyBsb2NhbHN0b3JhZ2UgZGF0YWJhc2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggMTk3OGUzZTVlYzdhN2M1M2UzYzEzMDhm
YTFmNThlYjcyNmMxZjk2Yi4uOTgyZjBlMTZkMmQxY2RiYWU4MDFlNTRkZDM3YWMwMDMyMzA3NDJl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CkBAIC0yNjU4LDcgKzI2NTgsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNsZWFyVGV4dE1hcmtl
ck5vZGVzSW5Vc2UoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIC8vIENoZWNrIGVhY2ggbm9kZSB0
byBzZWUgaWYgaXQncyBpbnNpZGUgdGhlIGRvY3VtZW50IGJlaW5nIGRlbGV0ZWQsIG9mIGlmIGl0
IG5vIGxvbmdlciBiZWxvbmdzIHRvIGEgZG9jdW1lbnQuCiAgICAgSGFzaFNldDxOb2RlKj4gbm9k
ZXNUb0RlbGV0ZTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIG5vZGUgOiBtX3RleHRNYXJrZXJOb2Rl
cykgewotICAgICAgICBpZiAoIW5vZGUtPmluRG9jdW1lbnQoKSB8fCAmKG5vZGUpLT5kb2N1bWVu
dCgpID09IGRvY3VtZW50KQorICAgICAgICBpZiAoIW5vZGUtPmlzQ29ubmVjdGVkKCkgfHwgJihu
b2RlKS0+ZG9jdW1lbnQoKSA9PSBkb2N1bWVudCkKICAgICAgICAgICAgIG5vZGVzVG9EZWxldGUu
YWRkKG5vZGUpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVDdXN0b20uY3BwCmluZGV4IGFhMjI2YmEwYzBiMmRjOTFhMjY3NzNiNzllNjI3MGI1ZjNjNzZk
MmMuLjMyNTQ4NzIwY2ViNTIzMGYxODIzM2ZlODZjZDdjMTcwZmYyMDg1ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcApAQCAtNzQsNyArNzQsNyBAQCB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZWFjaGFi
bGVGcm9tRE9NKE5vZGUqIG5vZGUsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlmICgh
bm9kZS0+aW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKCFub2RlLT5pc0Nvbm5lY3RlZCgpKSB7CiAg
ICAgICAgIGlmIChpczxFbGVtZW50Pigqbm9kZSkpIHsKICAgICAgICAgICAgIGF1dG8mIGVsZW1l
bnQgPSBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcAppbmRleCA2ODM5NmUxNDk2MTYzNDYyOTgxNjM2MWMyMThlZjAwYmQ1YmRiYmYyLi5h
NWQ3OWQzMjlhN2QyNWNhZGZkZjM3ZGMxZmQxMWM0N2I2M2ViNzkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwCkBAIC04MTYsNyArODE2LDcgQEAgc3RhdGljIHZvaWQgZGlzcGF0
Y2hDaGlsZEluc2VydGlvbkV2ZW50cyhOb2RlJiBjaGlsZCkKICAgICAgICAgYy0+ZGlzcGF0Y2hT
Y29wZWRFdmVudChNdXRhdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTU5vZGVJbnNl
cnRlZEV2ZW50LCB0cnVlLCBjLT5wYXJlbnROb2RlKCkpKTsKIAogICAgIC8vIGRpc3BhdGNoIHRo
ZSBET01Ob2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQgZXZlbnQgdG8gYWxsIGRlc2NlbmRhbnRzCi0g
ICAgaWYgKGMtPmluRG9jdW1lbnQoKSAmJiBkb2N1bWVudC0+aGFzTGlzdGVuZXJUeXBlKERvY3Vt
ZW50OjpET01OT0RFSU5TRVJURURJTlRPRE9DVU1FTlRfTElTVEVORVIpKSB7CisgICAgaWYgKGMt
PmlzQ29ubmVjdGVkKCkgJiYgZG9jdW1lbnQtPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9N
Tk9ERUlOU0VSVEVESU5UT0RPQ1VNRU5UX0xJU1RFTkVSKSkgewogICAgICAgICBmb3IgKDsgYzsg
YyA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKmMsICZjaGlsZCkpCiAgICAgICAgICAgICBjLT5kaXNw
YXRjaFNjb3BlZEV2ZW50KE11dGF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NTm9k
ZUluc2VydGVkSW50b0RvY3VtZW50RXZlbnQsIGZhbHNlKSk7CiAgICAgfQpAQCAtODQyLDcgKzg0
Miw3IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKE5vZGUmIGNoaWxk
KQogICAgICAgICBjLT5kaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9uRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuRE9NTm9kZVJlbW92ZWRFdmVudCwgdHJ1ZSwgYy0+cGFyZW50Tm9kZSgpKSk7
CiAKICAgICAvLyBkaXNwYXRjaCB0aGUgRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQgZXZlbnQg
dG8gYWxsIGRlc2NlbmRhbnRzCi0gICAgaWYgKGMtPmluRG9jdW1lbnQoKSAmJiBkb2N1bWVudC0+
aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01OT0RFUkVNT1ZFREZST01ET0NVTUVOVF9MSVNU
RU5FUikpIHsKKyAgICBpZiAoYy0+aXNDb25uZWN0ZWQoKSAmJiBkb2N1bWVudC0+aGFzTGlzdGVu
ZXJUeXBlKERvY3VtZW50OjpET01OT0RFUkVNT1ZFREZST01ET0NVTUVOVF9MSVNURU5FUikpIHsK
ICAgICAgICAgZm9yICg7IGM7IGMgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpjLCAmY2hpbGQpKQog
ICAgICAgICAgICAgYy0+ZGlzcGF0Y2hTY29wZWRFdmVudChNdXRhdGlvbkV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRnJvbURvY3VtZW50RXZlbnQsIGZhbHNlKSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0
aG1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAK
aW5kZXggNzUzNjlkNjFkN2E2NDUzMzkwNDViODA1YjA3ODMyMDI3ZmMzZjBkMi4uNTE0Zjk4NjFi
MjY4M2FhMWNjNDhhZjBiNWMyOTMyMWYyYmI1N2E0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyB2
b2lkIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudChDb250YWluZXJOb2RlJiBp
bnNlcnRpb25Qb2ludCwKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0
aGUgZG9jdW1lbnQgZHVyaW5nIHRoaXMgbG9vcCwgdGhlbgogICAgICAgICAvLyB3ZSBkb24ndCB3
YW50IHRvIHRlbGwgdGhlIHJlc3Qgb2Ygb3VyIGNoaWxkcmVuIHRoYXQgdGhleSd2ZSBiZWVuCiAg
ICAgICAgIC8vIGluc2VydGVkIGludG8gdGhlIGRvY3VtZW50IGJlY2F1c2UgdGhleSBoYXZlbid0
LgotICAgICAgICBpZiAobm9kZS5pbkRvY3VtZW50KCkgJiYgY2hpbGQtPnBhcmVudE5vZGUoKSA9
PSAmbm9kZSkKKyAgICAgICAgaWYgKG5vZGUuaXNDb25uZWN0ZWQoKSAmJiBjaGlsZC0+cGFyZW50
Tm9kZSgpID09ICZub2RlKQogICAgICAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3Vt
ZW50KGluc2VydGlvblBvaW50LCAqY2hpbGQsIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJn
ZXRzKTsKICAgICB9CiAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIHZvaWQgbm90aWZ5RGVzY2Vu
ZGFudEluc2VydGVkSW50b0RvY3VtZW50KENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50LAog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoUmVmUHRyPFNoYWRvd1Jvb3Q+IHJvb3QgPSBkb3du
Y2FzdDxFbGVtZW50Pihub2RlKS5zaGFkb3dSb290KCkpIHsKLSAgICAgICAgaWYgKG5vZGUuaW5E
b2N1bWVudCgpICYmIHJvb3QtPmhvc3QoKSA9PSAmbm9kZSkKKyAgICAgICAgaWYgKG5vZGUuaXND
b25uZWN0ZWQoKSAmJiByb290LT5ob3N0KCkgPT0gJm5vZGUpCiAgICAgICAgICAgICBub3RpZnlO
b2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoaW5zZXJ0aW9uUG9pbnQsICpyb290LCBwb3N0SW5zZXJ0
aW9uTm90aWZpY2F0aW9uVGFyZ2V0cyk7CiAgICAgfQogfQpAQCAtNzEsNyArNzEsNyBAQCBzdGF0
aWMgdm9pZCBub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvVHJlZShDb250YWluZXJOb2RlJiBp
bnNlcnRpb25Qb2ludCwgQ29udAogCiB2b2lkIG5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVu
dChDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCwgTm9kZSYgbm9kZSwgTm9kZVZlY3RvciYg
cG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMpCiB7Ci0gICAgQVNTRVJUKGluc2VydGlv
blBvaW50LmluRG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKGluc2VydGlvblBvaW50LmlzQ29ubmVj
dGVkKCkpOwogICAgIGlmIChub2RlLmluc2VydGVkSW50byhpbnNlcnRpb25Qb2ludCkgPT0gTm9k
ZTo6SW5zZXJ0aW9uU2hvdWxkQ2FsbEZpbmlzaGVkSW5zZXJ0aW5nU3VidHJlZSkKICAgICAgICAg
cG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMuYXBwZW5kKG5vZGUpOwogICAgIGlmIChp
czxDb250YWluZXJOb2RlPihub2RlKSkKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBub3RpZnlOb2Rl
SW5zZXJ0ZWRJbnRvRG9jdW1lbnQoQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQsIE5vZGUm
IG5vZGUsIE4KIHZvaWQgbm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9kZSYg
aW5zZXJ0aW9uUG9pbnQsIENvbnRhaW5lck5vZGUmIG5vZGUsIE5vZGVWZWN0b3ImIHBvc3RJbnNl
cnRpb25Ob3RpZmljYXRpb25UYXJnZXRzKQogewogICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlv
biBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7Ci0gICAgQVNTRVJUKCFpbnNlcnRpb25Qb2ludC5pbkRv
Y3VtZW50KCkpOworICAgIEFTU0VSVCghaW5zZXJ0aW9uUG9pbnQuaXNDb25uZWN0ZWQoKSk7CiAK
ICAgICBpZiAobm9kZS5pbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQpID09IE5vZGU6Okluc2Vy
dGlvblNob3VsZENhbGxGaW5pc2hlZEluc2VydGluZ1N1YnRyZWUpCiAgICAgICAgIHBvc3RJbnNl
cnRpb25Ob3RpZmljYXRpb25UYXJnZXRzLmFwcGVuZChub2RlKTsKQEAgLTk3LDcgKzk3LDcgQEAg
dm9pZCBub3RpZnlDaGlsZE5vZGVJbnNlcnRlZChDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2lu
dCwgTm9kZSYgbm9kZSwgTm9kZVZlY3QKICAgICBSZWY8RG9jdW1lbnQ+IHByb3RlY3REb2N1bWVu
dChub2RlLmRvY3VtZW50KCkpOwogICAgIFJlZjxOb2RlPiBwcm90ZWN0Tm9kZShub2RlKTsKIAot
ICAgIGlmIChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkpCisgICAgaWYgKGluc2VydGlvblBv
aW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVu
dChpbnNlcnRpb25Qb2ludCwgbm9kZSwgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMp
OwogICAgIGVsc2UgaWYgKGlzPENvbnRhaW5lck5vZGU+KG5vZGUpKQogICAgICAgICBub3RpZnlO
b2RlSW5zZXJ0ZWRJbnRvVHJlZShpbnNlcnRpb25Qb2ludCwgZG93bmNhc3Q8Q29udGFpbmVyTm9k
ZT4obm9kZSksIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzKTsKQEAgLTEwNSw3ICsx
MDUsNyBAQCB2b2lkIG5vdGlmeUNoaWxkTm9kZUluc2VydGVkKENvbnRhaW5lck5vZGUmIGluc2Vy
dGlvblBvaW50LCBOb2RlJiBub2RlLCBOb2RlVmVjdAogCiB2b2lkIG5vdGlmeU5vZGVSZW1vdmVk
RnJvbURvY3VtZW50KENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50LCBOb2RlJiBub2RlKQog
ewotICAgIEFTU0VSVChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkpOworICAgIEFTU0VSVChp
bnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgpKTsKICAgICBub2RlLnJlbW92ZWRGcm9tKGluc2Vy
dGlvblBvaW50KTsKIAogICAgIGlmICghaXM8Q29udGFpbmVyTm9kZT4obm9kZSkpCkBAIC0xMTUs
NyArMTE1LDcgQEAgdm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChDb250YWluZXJO
b2RlJiBpbnNlcnRpb25Qb2ludCwgTm9kZSYgbm9kZSkKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBi
ZWVuIGFkZGVkIHRvIHRoZSBkb2N1bWVudCBkdXJpbmcgdGhpcyBsb29wLCB0aGVuIHdlCiAgICAg
ICAgIC8vIGRvbid0IHdhbnQgdG8gdGVsbCB0aGUgcmVzdCBvZiBvdXIgY2hpbGRyZW4gdGhhdCB0
aGV5J3ZlIGJlZW4KICAgICAgICAgLy8gcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudCBiZWNhdXNl
IHRoZXkgaGF2ZW4ndC4KLSAgICAgICAgaWYgKCFub2RlLmluRG9jdW1lbnQoKSAmJiBjaGlsZC0+
cGFyZW50Tm9kZSgpID09ICZub2RlKQorICAgICAgICBpZiAoIW5vZGUuaXNDb25uZWN0ZWQoKSAm
JiBjaGlsZC0+cGFyZW50Tm9kZSgpID09ICZub2RlKQogICAgICAgICAgICAgbm90aWZ5Tm9kZVJl
bW92ZWRGcm9tRG9jdW1lbnQoaW5zZXJ0aW9uUG9pbnQsICpjaGlsZC5nZXQoKSk7CiAgICAgfQog
CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChD
b250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCwgTm9kZSYgbm9kZSkKICAgICAgICAgbm9kZS5k
b2N1bWVudCgpLnNldENTU1RhcmdldChudWxscHRyKTsKIAogICAgIGlmIChSZWZQdHI8U2hhZG93
Um9vdD4gcm9vdCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpLnNoYWRvd1Jvb3QoKSkgewotICAg
ICAgICBpZiAoIW5vZGUuaW5Eb2N1bWVudCgpICYmIHJvb3QtPmhvc3QoKSA9PSAmbm9kZSkKKyAg
ICAgICAgaWYgKCFub2RlLmlzQ29ubmVjdGVkKCkgJiYgcm9vdC0+aG9zdCgpID09ICZub2RlKQog
ICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoaW5zZXJ0aW9uUG9pbnQs
ICpyb290LmdldCgpKTsKICAgICB9CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBub3RpZnlO
b2RlUmVtb3ZlZEZyb21Eb2N1bWVudChDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCwgTm9k
ZSYgbm9kZSkKIHZvaWQgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlJiBp
bnNlcnRpb25Qb2ludCwgQ29udGFpbmVyTm9kZSYgbm9kZSkKIHsKICAgICBOb0V2ZW50RGlzcGF0
Y2hBc3NlcnRpb24gYXNzZXJ0Tm9FdmVudERpc3BhdGNoOwotICAgIEFTU0VSVCghaW5zZXJ0aW9u
UG9pbnQuaW5Eb2N1bWVudCgpKTsKKyAgICBBU1NFUlQoIWluc2VydGlvblBvaW50LmlzQ29ubmVj
dGVkKCkpOwogCiAgICAgbm9kZS5yZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiAKQEAgLTE1
Miw3ICsxNTIsNyBAQCB2b2lkIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9k
ZSYgaW5zZXJ0aW9uUG9pbnQsIENvbnRhaW5lck5vZGUmIG5vZAogCiB2b2lkIG5vdGlmeUNoaWxk
Tm9kZVJlbW92ZWQoQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQsIE5vZGUmIGNoaWxkKQog
ewotICAgIGlmICghY2hpbGQuaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKCFjaGlsZC5pc0Nvbm5l
Y3RlZCgpKSB7CiAgICAgICAgIGlmIChpczxDb250YWluZXJOb2RlPihjaGlsZCkpCiAgICAgICAg
ICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKGluc2VydGlvblBvaW50LCBkb3duY2FzdDxD
b250YWluZXJOb2RlPihjaGlsZCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcAppbmRleCBhMWQxYTExNWU1
ZDhiMWZjOTMzMjBkYTVjYzgzOTAxY2VkYzRhY2ZlLi5hN2RhYjk3YWQ1MGM1MDM0MTlhOTQwNjI1
MmZiOTE2OTNiZmZkZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxl
bWVudFJlYWN0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVt
ZW50UmVhY3Rpb25RdWV1ZS5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblF1ZXVlOjplbnF1ZXVlRWxlbWVudFVwZ3JhZGUoRWxlbWVudCYgZWxlbWVudCkK
IAogdm9pZCBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5xdWV1ZUVsZW1lbnRVcGdyYWRl
SWZEZWZpbmVkKEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgQVNTRVJUKGVsZW1lbnQuaW5Eb2N1
bWVudCgpKTsKKyAgICBBU1NFUlQoZWxlbWVudC5pc0Nvbm5lY3RlZCgpKTsKICAgICBBU1NFUlQo
ZWxlbWVudC5pc0N1c3RvbUVsZW1lbnRVcGdyYWRlQ2FuZGlkYXRlKCkpOwogICAgIGF1dG8qIHdp
bmRvdyA9IGVsZW1lbnQuZG9jdW1lbnQoKS5kb21XaW5kb3coKTsKICAgICBpZiAoIXdpbmRvdykK
QEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjplbnF1
ZXVlQXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrSWZOZWVkZWQoRWxlbWVudAogdm9pZCBDdXN0b21F
bGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5xdWV1ZVBvc3RVcGdyYWRlUmVhY3Rpb25zKEVsZW1lbnQm
IGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQuaXNDdXN0b21FbGVtZW50VXBncmFkZUNh
bmRpZGF0ZSgpKTsKLSAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlcygpICYmICFlbGVtZW50
LmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlcygpICYmICFlbGVt
ZW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8qIHF1ZXVlID0g
ZWxlbWVudC5yZWFjdGlvblF1ZXVlKCk7CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBDdXN0b21F
bGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5xdWV1ZVBvc3RVcGdyYWRlUmVhY3Rpb25zKEVsZW1lbnQm
IGVsZW1lbnQpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoZWxlbWVudC5pbkRvY3VtZW50
KCkgJiYgcXVldWUtPm1faW50ZXJmYWNlLT5oYXNDb25uZWN0ZWRDYWxsYmFjaygpKQorICAgIGlm
IChlbGVtZW50LmlzQ29ubmVjdGVkKCkgJiYgcXVldWUtPm1faW50ZXJmYWNlLT5oYXNDb25uZWN0
ZWRDYWxsYmFjaygpKQogICAgICAgICBxdWV1ZS0+bV9pdGVtcy5hcHBlbmQoe0N1c3RvbUVsZW1l
bnRSZWFjdGlvblF1ZXVlSXRlbTo6VHlwZTo6Q29ubmVjdGVkfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggOWVjYjM1MWQzY2E0NzczYWFiZWNjODdhNTQ0ZmI2ODcw
NjM2NzlhMC4uYWY2OWZhMGQwYzc0MjkwMGI1YmQwMzVlOWIwYWVhZmRlMDY5Y2YxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIERhdGFU
cmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKEVsZW1lbnQqIGVsZW1lbnQsIGludCB4LCBpbnQgeSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQ2FjaGVkSW1hZ2UqIGltYWdlID0gbnVsbHB0cjsKLSAgICBp
ZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkgJiYgIWVsZW1lbnQtPmluRG9jdW1lbnQo
KSkKKyAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkgJiYgIWVsZW1lbnQtPmlz
Q29ubmVjdGVkKCkpCiAgICAgICAgIGltYWdlID0gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4o
KmVsZW1lbnQpLmNhY2hlZEltYWdlKCk7CiAKICAgICBtX2RyYWdMb2NhdGlvbiA9IEludFBvaW50
KHgsIHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMGFlNzBmZTZjMWMxNzYyMTdiNjg2
ZWFkYzkxZTZlZTE0NDEyNzU4Yy4uYjViN2UzMzBkM2E2MGM5OTM1ZTFlN2U3MmFlMzJhOWFlNzc4
YTI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01NTc5LDcgKzU1NzksNyBAQCB2b2lk
IERvY3VtZW50OjpyZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwg
RnVsbFNjcmVlbkNoZWNrVHlwZQogICAgICAgICAvLyBub2RlIGRvY3VtZW50OgogCiAgICAgICAg
IC8vIFRoZSBjb250ZXh0IG9iamVjdCBpcyBub3QgaW4gYSBkb2N1bWVudC4KLSAgICAgICAgaWYg
KCFlbGVtZW50LT5pbkRvY3VtZW50KCkpCisgICAgICAgIGlmICghZWxlbWVudC0+aXNDb25uZWN0
ZWQoKSkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8vIFRoZSBjb250ZXh0IG9iamVj
dCdzIG5vZGUgZG9jdW1lbnQsIG9yIGFuIGFuY2VzdG9yIGJyb3dzaW5nIGNvbnRleHQncyBkb2N1
bWVudCBkb2VzIG5vdCBoYXZlCkBAIC01NzM4LDcgKzU3MzgsNyBAQCB2b2lkIERvY3VtZW50Ojp3
ZWJraXRFeGl0RnVsbHNjcmVlbigpCiAgICAgICAgIC8vICAgIElmIGRvYydzIGZ1bGxzY3JlZW4g
ZWxlbWVudCBzdGFjayBpcyBub24tZW1wdHkgYW5kIHRoZSBlbGVtZW50IG5vdyBhdCB0aGUgdG9w
IGlzIGVpdGhlcgogICAgICAgICAvLyAgICBub3QgaW4gYSBkb2N1bWVudCBvciBpdHMgbm9kZSBk
b2N1bWVudCBpcyBub3QgZG9jLCByZXBlYXQgdGhpcyBzdWJzdGVwLgogICAgICAgICBuZXdUb3Ag
PSBjdXJyZW50RG9jLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpOwotICAgICAgICBpZiAobmV3
VG9wICYmICghbmV3VG9wLT5pbkRvY3VtZW50KCkgfHwgJm5ld1RvcC0+ZG9jdW1lbnQoKSAhPSBj
dXJyZW50RG9jKSkKKyAgICAgICAgaWYgKG5ld1RvcCAmJiAoIW5ld1RvcC0+aXNDb25uZWN0ZWQo
KSB8fCAmbmV3VG9wLT5kb2N1bWVudCgpICE9IGN1cnJlbnREb2MpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgLy8gMi4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYW4gZXZlbnQgbmFt
ZWQgZnVsbHNjcmVlbmNoYW5nZSB3aXRoIGl0cyBidWJibGVzIGF0dHJpYnV0ZSBzZXQgdG8gdHJ1
ZQpAQCAtNTkzNyw3ICs1OTM3LDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlzcGF0Y2hGdWxsU2NyZWVu
Q2hhbmdlT3JFcnJvckV2ZW50KERlcXVlPFJlZlB0cjxOb2RlPj4mIHF1ZXVlLAogCiAgICAgICAg
IC8vIElmIHRoZSBlbGVtZW50IHdhcyByZW1vdmVkIGZyb20gb3VyIHRyZWUsIGFsc28gbWVzc2Fn
ZSB0aGUgZG9jdW1lbnRFbGVtZW50LiBTaW5jZSB3ZSBtYXkKICAgICAgICAgLy8gaGF2ZSBhIGRv
Y3VtZW50IGhpZXJhcmNoeSwgY2hlY2sgdGhhdCBub2RlIGlzbid0IGluIGFub3RoZXIgZG9jdW1l
bnQuCi0gICAgICAgIGlmICghbm9kZS0+aW5Eb2N1bWVudCgpKQorICAgICAgICBpZiAoIW5vZGUt
PmlzQ29ubmVjdGVkKCkpCiAgICAgICAgICAgICBxdWV1ZS5hcHBlbmQoZG9jdW1lbnRFbGVtZW50
KCkpOwogCiAjaWYgRU5BQkxFKFZJREVPKQpAQCAtNjk2MSw3ICs2OTYxLDcgQEAgRE9NU2VsZWN0
aW9uKiBEb2N1bWVudDo6Z2V0U2VsZWN0aW9uKCkKIAogdm9pZCBEb2N1bWVudDo6ZGlkSW5zZXJ0
SW5Eb2N1bWVudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKIHsKLSAgICBBU1NF
UlQoc2hhZG93Um9vdC5pbkRvY3VtZW50KCkpOworICAgIEFTU0VSVChzaGFkb3dSb290LmlzQ29u
bmVjdGVkKCkpOwogICAgIEFTU0VSVCghbV9pbkRvY3VtZW50U2hhZG93Um9vdHMuY29udGFpbnMo
JnNoYWRvd1Jvb3QpKTsKICAgICBtX2luRG9jdW1lbnRTaGFkb3dSb290cy5hZGQoJnNoYWRvd1Jv
b3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDg1ZTBiMjZmMWMzZTc4YjJjYmJjNjg1
YjZhZDE5ZjI1ZDBkOWJlYTAuLjlkYWY5YmUyMjY3YWZlOWMxZmFlYTUyMDA2MmYwMDM0MjNlYzZj
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTUwOCw3ICs1MDgsNyBAQCBWZWN0b3I8U3Ry
aW5nPiBFbGVtZW50OjpnZXRBdHRyaWJ1dGVOYW1lcygpIGNvbnN0CiAKIGJvb2wgRWxlbWVudDo6
aXNGb2N1c2FibGUoKSBjb25zdAogewotICAgIGlmICghaW5Eb2N1bWVudCgpIHx8ICFzdXBwb3J0
c0ZvY3VzKCkpCisgICAgaWYgKCFpc0Nvbm5lY3RlZCgpIHx8ICFzdXBwb3J0c0ZvY3VzKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcmVuZGVyZXIoKSkgewpAQCAtMTUxMCw3
ICsxNTEwLDcgQEAgdm9pZCBFbGVtZW50OjpzdHJpcFNjcmlwdGluZ0F0dHJpYnV0ZXMoVmVjdG9y
PEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvcikgY29uc3QKIAogdm9pZCBFbGVtZW50OjpwYXJz
ZXJTZXRBdHRyaWJ1dGVzKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVWZWN0b3Ip
CiB7Ci0gICAgQVNTRVJUKCFpbkRvY3VtZW50KCkpOworICAgIEFTU0VSVCghaXNDb25uZWN0ZWQo
KSk7CiAgICAgQVNTRVJUKCFwYXJlbnROb2RlKCkpOwogICAgIEFTU0VSVCghbV9lbGVtZW50RGF0
YSk7CiAKQEAgLTE2MDUsMTEgKzE2MDUsMTEgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb24KIAog
Tm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBFbGVtZW50OjppbnNlcnRlZEludG8o
Q29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7Ci0gICAgYm9vbCB3YXNJbkRvY3VtZW50
ID0gaW5Eb2N1bWVudCgpOwotICAgIC8vIG5lZWQgdG8gZG8gc3VwZXJjbGFzcyBwcm9jZXNzaW5n
IGZpcnN0IHNvIGluRG9jdW1lbnQoKSBpcyB0cnVlCisgICAgYm9vbCB3YXNJbkRvY3VtZW50ID0g
aXNDb25uZWN0ZWQoKTsKKyAgICAvLyBuZWVkIHRvIGRvIHN1cGVyY2xhc3MgcHJvY2Vzc2luZyBm
aXJzdCBzbyBpc0Nvbm5lY3RlZCgpIGlzIHRydWUKICAgICAvLyBieSB0aGUgdGltZSB3ZSByZWFj
aCB1cGRhdGVJZAogICAgIENvbnRhaW5lck5vZGU6Omluc2VydGVkSW50byhpbnNlcnRpb25Qb2lu
dCk7Ci0gICAgQVNTRVJUKCF3YXNJbkRvY3VtZW50IHx8IGluRG9jdW1lbnQoKSk7CisgICAgQVNT
RVJUKCF3YXNJbkRvY3VtZW50IHx8IGlzQ29ubmVjdGVkKCkpOwogCiAjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQogICAgIGlmIChjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkgJiYgcGFyZW50
RWxlbWVudCgpICYmICFwYXJlbnRFbGVtZW50KCktPmNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQo
KSkKQEAgLTE2MjgsNyArMTYyOCw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVl
c3QgRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIGluc2VydGlvCiAgICAgLy8g
VGhpcyBlbGVtZW50IGlzIG5ldyB0byB0aGUgc2hhZG93IHRyZWUgKGFuZCBpdHMgdHJlZSBzY29w
ZSkgb25seSBpZiB0aGUgcGFyZW50IGludG8gd2hpY2ggdGhpcyBlbGVtZW50CiAgICAgLy8gb3Ig
aXRzIGFuY2VzdG9yIGlzIGluc2VydGVkIGJlbG9uZ3MgdG8gdGhlIHNhbWUgdHJlZSBzY29wZSBh
cyB0aGlzIGVsZW1lbnQncy4KICAgICBUcmVlU2NvcGUqIG5ld1Njb3BlID0gJmluc2VydGlvblBv
aW50LnRyZWVTY29wZSgpOwotICAgIGJvb2wgYmVjb21lQ29ubmVjdGVkID0gIXdhc0luRG9jdW1l
bnQgJiYgaW5Eb2N1bWVudCgpOworICAgIGJvb2wgYmVjb21lQ29ubmVjdGVkID0gIXdhc0luRG9j
dW1lbnQgJiYgaXNDb25uZWN0ZWQoKTsKICAgICBIVE1MRG9jdW1lbnQqIG5ld0RvY3VtZW50ID0g
YmVjb21lQ29ubmVjdGVkICYmIGlzPEhUTUxEb2N1bWVudD4obmV3U2NvcGUtPmRvY3VtZW50U2Nv
cGUoKSkgPyAmZG93bmNhc3Q8SFRNTERvY3VtZW50PihuZXdTY29wZS0+ZG9jdW1lbnRTY29wZSgp
KSA6IG51bGxwdHI7CiAgICAgaWYgKG5ld1Njb3BlICE9ICZ0cmVlU2NvcGUoKSkKICAgICAgICAg
bmV3U2NvcGUgPSBudWxscHRyOwpAQCAtMTY3OSw3ICsxNjc5LDcgQEAgdm9pZCBFbGVtZW50Ojpy
ZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIAogICAgIGlmIChpbnNl
cnRpb25Qb2ludC5pc0luVHJlZVNjb3BlKCkpIHsKICAgICAgICAgVHJlZVNjb3BlKiBvbGRTY29w
ZSA9ICZpbnNlcnRpb25Qb2ludC50cmVlU2NvcGUoKTsKLSAgICAgICAgYm9vbCBiZWNvbWVEaXNj
b25uZWN0ZWQgPSBpbkRvY3VtZW50KCk7CisgICAgICAgIGJvb2wgYmVjb21lRGlzY29ubmVjdGVk
ID0gaXNDb25uZWN0ZWQoKTsKICAgICAgICAgSFRNTERvY3VtZW50KiBvbGREb2N1bWVudCA9IGJl
Y29tZURpc2Nvbm5lY3RlZCAmJiBpczxIVE1MRG9jdW1lbnQ+KG9sZFNjb3BlLT5kb2N1bWVudFNj
b3BlKCkpID8gJmRvd25jYXN0PEhUTUxEb2N1bWVudD4ob2xkU2NvcGUtPmRvY3VtZW50U2NvcGUo
KSkgOiBudWxscHRyOwogCiAgICAgICAgIC8vIENvbnRhaW5lck5vZGU6OnJlbW92ZUJldHdlZW4g
YWx3YXlzIHNldHMgdGhlIHJlbW92ZWQgY2hpZCdzIHRyZWUgc2NvcGUgdG8gRG9jdW1lbnQncyBi
dXQgSW5UcmVlU2NvcGUgZmxhZyBpcyB1bnNldCBpbiBOb2RlOjpyZW1vdmVkRnJvbS4KQEAgLTIz
NDMsNyArMjM0Myw3IEBAIENTU1N0eWxlRGVjbGFyYXRpb24qIEVsZW1lbnQ6OmNzc29tU3R5bGUo
KQogCiB2b2lkIEVsZW1lbnQ6OmZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uLCBG
b2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAgaWYgKCFpbkRvY3VtZW50KCkpCisgICAg
aWYgKCFpc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZG9jdW1lbnQo
KS5mb2N1c2VkRWxlbWVudCgpID09IHRoaXMpIHsKQEAgLTI2NDYsNyArMjY0Niw3IEBAIGNvbnN0
IFJlbmRlclN0eWxlKiBFbGVtZW50OjpleGlzdGluZ0NvbXB1dGVkU3R5bGUoKQogCiBjb25zdCBS
ZW5kZXJTdHlsZSYgRWxlbWVudDo6cmVzb2x2ZUNvbXB1dGVkU3R5bGUoKQogewotICAgIEFTU0VS
VChpbkRvY3VtZW50KCkpOworICAgIEFTU0VSVChpc0Nvbm5lY3RlZCgpKTsKICAgICBBU1NFUlQo
IWV4aXN0aW5nQ29tcHV0ZWRTdHlsZSgpKTsKIAogICAgIERlcXVlPEVsZW1lbnQqLCAzMj4gZWxl
bWVudHNSZXF1aXJpbmdDb21wdXRlZFN0eWxlKHsgdGhpcyB9KTsKQEAgLTI2NzUsNyArMjY3NSw3
IEBAIGNvbnN0IFJlbmRlclN0eWxlJiBFbGVtZW50OjpyZXNvbHZlQ29tcHV0ZWRTdHlsZSgpCiAK
IGNvbnN0IFJlbmRlclN0eWxlKiBFbGVtZW50Ojpjb21wdXRlZFN0eWxlKFBzZXVkb0lkIHBzZXVk
b0VsZW1lbnRTcGVjaWZpZXIpCiB7Ci0gICAgaWYgKCFpbkRvY3VtZW50KCkpCisgICAgaWYgKCFp
c0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChQc2V1ZG9F
bGVtZW50KiBwc2V1ZG9FbGVtZW50ID0gYmVmb3JlT3JBZnRlclBzZXVkb0VsZW1lbnQoKnRoaXMs
IHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpKQpAQCAtMzIwMiw3ICszMjAyLDcgQEAgaW5saW5lIHZv
aWQgRWxlbWVudDo6dXBkYXRlTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG9sZE5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYKIAogICAgIHVwZGF0ZU5hbWVGb3JUcmVlU2NvcGUodHJlZVNjb3BlKCks
IG9sZE5hbWUsIG5ld05hbWUpOwogCi0gICAgaWYgKCFpbkRvY3VtZW50KCkpCisgICAgaWYgKCFp
c0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFpczxIVE1MRG9jdW1lbnQ+
KGRvY3VtZW50KCkpKQogICAgICAgICByZXR1cm47CkBAIC0zMjUzLDcgKzMyNTMsNyBAQCBpbmxp
bmUgdm9pZCBFbGVtZW50Ojp1cGRhdGVJZChjb25zdCBBdG9taWNTdHJpbmcmIG9sZElkLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5ldwogCiAgICAgdXBkYXRlSWRGb3JUcmVlU2NvcGUodHJlZVNjb3Bl
KCksIG9sZElkLCBuZXdJZCwgbm90aWZ5T2JzZXJ2ZXJzKTsKIAotICAgIGlmICghaW5Eb2N1bWVu
dCgpKQorICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICgh
aXM8SFRNTERvY3VtZW50Pihkb2N1bWVudCgpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzI3Myw3
ICszMjczLDcgQEAgdm9pZCBFbGVtZW50Ojp1cGRhdGVJZEZvclRyZWVTY29wZShUcmVlU2NvcGUm
IHNjb3BlLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZElkLAogCiB2b2lkIEVsZW1lbnQ6OnVwZGF0
ZUlkRm9yRG9jdW1lbnQoSFRNTERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5n
JiBvbGRJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdJZCwgSFRNTERvY3VtZW50TmFtZWRJdGVt
TWFwc1VwZGF0aW5nQ29uZGl0aW9uIGNvbmRpdGlvbikKIHsKLSAgICBBU1NFUlQoaW5Eb2N1bWVu
dCgpKTsKKyAgICBBU1NFUlQoaXNDb25uZWN0ZWQoKSk7CiAgICAgQVNTRVJUKG9sZElkICE9IG5l
d0lkKTsKIAogICAgIGlmIChpc0luU2hhZG93VHJlZSgpKQpAQCAtMzMwMCw3ICszMzAwLDcgQEAg
dm9pZCBFbGVtZW50Ojp1cGRhdGVMYWJlbChUcmVlU2NvcGUmIHNjb3BlLCBjb25zdCBBdG9taWNT
dHJpbmcmIG9sZEZvckF0dHJpYnV0ZVYKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShsYWJlbFRh
ZykpOwogCi0gICAgaWYgKCFpbkRvY3VtZW50KCkpCisgICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAob2xkRm9yQXR0cmlidXRlVmFsdWUgPT0gbmV3Rm9y
QXR0cmlidXRlVmFsdWUpCkBAIC0zNTEwLDcgKzM1MTAsNyBAQCB2b2lkIEVsZW1lbnQ6OmNsb25l
QXR0cmlidXRlc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmIG90aGVyKQogCiAgICAgLy8gV2Ug
Y2FuJ3QgdXBkYXRlIHdpbmRvdyBhbmQgZG9jdW1lbnQncyBuYW1lZCBpdGVtIG1hcHMgc2luY2Ug
dGhlIHByZXNlbmNlIG9mIGltYWdlIGFuZCBvYmplY3QgZWxlbWVudHMgZGVwZW5kIG9uIG90aGVy
IGF0dHJpYnV0ZXMgYW5kIGNoaWxkcmVuLgogICAgIC8vIEZvcnR1bmF0ZWx5LCB0aG9zZSBuYW1l
ZCBpdGVtIG1hcHMgYXJlIG9ubHkgdXBkYXRlZCB3aGVuIHRoaXMgZWxlbWVudCBpcyBpbiB0aGUg
ZG9jdW1lbnQsIHdoaWNoIHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZS4KLSAgICBBU1NFUlQoIWlu
RG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKCFpc0Nvbm5lY3RlZCgpKTsKIAogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgb2xkSUQgPSBnZXRJZEF0dHJpYnV0ZSgpOwogICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbmV3SUQgPSBvdGhlci5nZXRJZEF0dHJpYnV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5k
ZXggOTUzNDE2YjFlZWQ0Nzg5NzBjOGRlMmI5NmRiZjg4YzVhYTVlNzliZS4uNzljMGFhMDAxZTVi
YzY1NmRjZjFkZjM1ZmI0ZDk3MmRhZjY5ODk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC03MDEs
NyArNzAxLDcgQEAgaW5saW5lIEVsZW1lbnQqIE5vZGU6OnBhcmVudEVsZW1lbnQoKSBjb25zdAog
CiBpbmxpbmUgY29uc3QgRWxlbWVudCogRWxlbWVudDo6cm9vdEVsZW1lbnQoKSBjb25zdAogewot
ICAgIGlmIChpbkRvY3VtZW50KCkpCisgICAgaWYgKGlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJl
dHVybiBkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpOwogCiAgICAgY29uc3QgRWxlbWVudCog
aGlnaGVzdCA9IHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRo
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCmluZGV4IDc3NzEyODFhYjk0
N2EzMTRmNjQwYTA5YWJkM2U0NzhiNzIyNjIzZGYuLjMxNjFlYWEzNzYzNTJkMDE3ZDljYjIyZjE5
YzA1YTZkNWE2MzUxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCkBAIC0yOTAsNyArMjkw
LDcgQEAgUmVsYXRlZE5vZGVSZXRhcmdldGVyOjpSZWxhdGVkTm9kZVJldGFyZ2V0ZXIoTm9kZSYg
cmVsYXRlZE5vZGUsIE5vZGUmIHRhcmdldCkKIHsKICAgICBhdXRvJiB0YXJnZXRUcmVlU2NvcGUg
PSB0YXJnZXQudHJlZVNjb3BlKCk7CiAgICAgVHJlZVNjb3BlKiBjdXJyZW50VHJlZVNjb3BlID0g
Jm1fcmVsYXRlZE5vZGUudHJlZVNjb3BlKCk7Ci0gICAgaWYgKExJS0VMWShjdXJyZW50VHJlZVNj
b3BlID09ICZ0YXJnZXRUcmVlU2NvcGUgJiYgdGFyZ2V0LmluRG9jdW1lbnQoKSAmJiBtX3JlbGF0
ZWROb2RlLmluRG9jdW1lbnQoKSkpCisgICAgaWYgKExJS0VMWShjdXJyZW50VHJlZVNjb3BlID09
ICZ0YXJnZXRUcmVlU2NvcGUgJiYgdGFyZ2V0LmlzQ29ubmVjdGVkKCkgJiYgbV9yZWxhdGVkTm9k
ZS5pc0Nvbm5lY3RlZCgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCZjdXJyZW50VHJl
ZVNjb3BlLT5kb2N1bWVudFNjb3BlKCkgIT0gJnRhcmdldFRyZWVTY29wZS5kb2N1bWVudFNjb3Bl
KCkpIHsKQEAgLTI5OCw3ICsyOTgsNyBAQCBSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OlJlbGF0ZWRO
b2RlUmV0YXJnZXRlcihOb2RlJiByZWxhdGVkTm9kZSwgTm9kZSYgdGFyZ2V0KQogICAgICAgICBt
X3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgaWYgKHJlbGF0ZWROb2RlLmluRG9jdW1lbnQoKSAhPSB0YXJnZXQuaW5Eb2N1bWVudCgp
KSB7CisgICAgaWYgKHJlbGF0ZWROb2RlLmlzQ29ubmVjdGVkKCkgIT0gdGFyZ2V0LmlzQ29ubmVj
dGVkKCkpIHsKICAgICAgICAgbV9oYXNEaWZmZXJlbnRUcmVlUm9vdCA9IHRydWU7CiAgICAgICAg
IG1fcmV0YXJnZXRlZFJlbGF0ZWROb2RlID0gbW92ZU91dE9mQWxsU2hhZG93Um9vdHMocmVsYXRl
ZE5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC0zMjMsNyArMzIzLDcgQEAgUmVsYXRlZE5vZGVS
ZXRhcmdldGVyOjpSZWxhdGVkTm9kZVJldGFyZ2V0ZXIoTm9kZSYgcmVsYXRlZE5vZGUsIE5vZGUm
IHRhcmdldCkKICAgICB9CiAKICAgICBib29sIGxvd2VzdENvbW1vbkFuY2VzdG9ySXNEb2N1bWVu
dFNjb3BlID0gaSArIDEgPT0gbV9hbmNlc3RvclRyZWVTY29wZXMuc2l6ZSgpOwotICAgIGlmIChs
b3dlc3RDb21tb25BbmNlc3RvcklzRG9jdW1lbnRTY29wZSAmJiAhcmVsYXRlZE5vZGUuaW5Eb2N1
bWVudCgpICYmICF0YXJnZXQuaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKGxvd2VzdENvbW1vbkFu
Y2VzdG9ySXNEb2N1bWVudFNjb3BlICYmICFyZWxhdGVkTm9kZS5pc0Nvbm5lY3RlZCgpICYmICF0
YXJnZXQuaXNDb25uZWN0ZWQoKSkgewogICAgICAgICBOb2RlJiByZWxhdGVkTm9kZUFuY2VzdG9y
SW5Eb2N1bWVudFNjb3BlID0gaSA/ICpkb3duY2FzdDxTaGFkb3dSb290PihtX2FuY2VzdG9yVHJl
ZVNjb3Blc1tpIC0gMV0tPnJvb3ROb2RlKCkpLnNoYWRvd0hvc3QoKSA6IHJlbGF0ZWROb2RlOwog
ICAgICAgICBOb2RlJiB0YXJnZXRBbmNlc3RvckluRG9jdW1lbnRTY29wZSA9IGogPyAqZG93bmNh
c3Q8U2hhZG93Um9vdD4odGFyZ2V0VHJlZVNjb3BlQW5jZXN0b3JzW2ogLSAxXS0+cm9vdE5vZGUo
KSkuc2hhZG93SG9zdCgpIDogdGFyZ2V0OwogICAgICAgICBpZiAoJnRhcmdldEFuY2VzdG9ySW5E
b2N1bWVudFNjb3BlLnJvb3ROb2RlKCkgIT0gJnJlbGF0ZWROb2RlQW5jZXN0b3JJbkRvY3VtZW50
U2NvcGUucm9vdE5vZGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGlu
ZVN0eWxlU2hlZXRPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVl
dE93bmVyLmNwcAppbmRleCBkYTY4ZmIxOTcyYzJhMGJhMDk1MGQzZDM4NmFlOTBkZWNkZjI5ZDhi
Li5hMjUyNjMyNDgzZTczYmQ2NjdmODA5YWI0MjI1MzkxYTNhNjU1YTcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcApAQCAtMTE2LDE0ICsxMTYsMTQg
QEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNoaWxkcmVuQ2hhbmdlZChFbGVtZW50JiBl
bGVtZW50KQogewogICAgIGlmIChtX2lzUGFyc2luZ0NoaWxkcmVuKQogICAgICAgICByZXR1cm47
Ci0gICAgaWYgKCFlbGVtZW50LmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIWVsZW1lbnQuaXNDb25u
ZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGNyZWF0ZVNoZWV0RnJvbVRleHRDb250ZW50
cyhlbGVtZW50KTsKIH0KIAogdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmZpbmlzaFBhcnNp
bmdDaGlsZHJlbihFbGVtZW50JiBlbGVtZW50KQogewotICAgIGlmIChlbGVtZW50LmluRG9jdW1l
bnQoKSkKKyAgICBpZiAoZWxlbWVudC5pc0Nvbm5lY3RlZCgpKQogICAgICAgICBjcmVhdGVTaGVl
dEZyb21UZXh0Q29udGVudHMoZWxlbWVudCk7CiAgICAgbV9pc1BhcnNpbmdDaGlsZHJlbiA9IGZh
bHNlOwogfQpAQCAtMTUzLDcgKzE1Myw3IEBAIGlubGluZSBib29sIGlzVmFsaWRDU1NDb250ZW50
VHlwZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpCiAKIHZvaWQg
SW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgQVNTRVJUKGVsZW1lbnQuaW5Eb2N1bWVudCgpKTsKKyAg
ICBBU1NFUlQoZWxlbWVudC5pc0Nvbm5lY3RlZCgpKTsKICAgICBEb2N1bWVudCYgZG9jdW1lbnQg
PSBlbGVtZW50LmRvY3VtZW50KCk7CiAgICAgaWYgKG1fc2hlZXQpIHsKICAgICAgICAgaWYgKG1f
c2hlZXQtPmlzTG9hZGluZygpICYmIG1fc3R5bGVTY29wZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2Rl
TGlzdC5jcHAKaW5kZXggMDEzNWVhY2NhZGZlN2Y1OTU2NGZhNjk2NTIwZTE0MjliOTYwZTcxYi4u
MTY5ZDZkZTMzMGY1YmM4ZDFlZTk1MDEwMWY3ZTMxZDQyZTQyZWU5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0xpdmVOb2RlTGlzdC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgTGl2ZU5vZGVMaXN0Ojp+TGl2ZU5v
ZGVMaXN0KCkKIAogQ29udGFpbmVyTm9kZSYgTGl2ZU5vZGVMaXN0Ojpyb290Tm9kZSgpIGNvbnN0
CiB7Ci0gICAgaWYgKGlzUm9vdGVkQXREb2N1bWVudCgpICYmIG93bmVyTm9kZSgpLmluRG9jdW1l
bnQoKSkKKyAgICBpZiAoaXNSb290ZWRBdERvY3VtZW50KCkgJiYgb3duZXJOb2RlKCkuaXNDb25u
ZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuIG93bmVyTm9kZSgpLmRvY3VtZW50KCk7CiAKICAgICBy
ZXR1cm4gb3duZXJOb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5v
ZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKaW5kZXggZGVlNjQ2
YzM3ZDE1YWQ0NDMzYzAzMWI1ZTNhNWFjNDFlNjE0Mjk1Ny4uNWIxYjE2ZGNhZWU4YWQwMGJjZTk2
ZjhiM2RhMDRhZWMyMmMxMDYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVO
b2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaApAQCAtMTQ1
LDcgKzE0NSw3IEBAIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojp+Q2FjaGVkTGl2
ZU5vZGVMaXN0KCkKIHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+CiBpbmxpbmUgQ29udGFp
bmVyTm9kZSYgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OnJvb3ROb2RlKCkgY29u
c3QKIHsKLSAgICBpZiAobm9kZUxpc3QoKS5pc1Jvb3RlZEF0RG9jdW1lbnQoKSAmJiBvd25lck5v
ZGUoKS5pbkRvY3VtZW50KCkpCisgICAgaWYgKG5vZGVMaXN0KCkuaXNSb290ZWRBdERvY3VtZW50
KCkgJiYgb3duZXJOb2RlKCkuaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuIG93bmVyTm9k
ZSgpLmRvY3VtZW50KCk7CiAKICAgICByZXR1cm4gb3duZXJOb2RlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
aW5kZXggZTkxM2ZkNzNiMDViNWY1N2I0YzczYmY1N2E3MDY1YjMxNmE1OTRlNS4uYTZhOGVmYTZh
ZjJiYjY2ZTg0ZjhkMmNiZTg5NDZjMmU5M2FmMzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtOTEx
LDEwICs5MTEsMTAgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6Y2hlY2tTZXRQcmVmaXgoY29u
c3QgQXRvbWljU3RyaW5nJiBwcmVmaXgpCiBib29sIE5vZGU6OmlzRGVzY2VuZGFudE9mKGNvbnN0
IE5vZGUmIG90aGVyKSBjb25zdAogewogICAgIC8vIFJldHVybiB0cnVlIGlmIG90aGVyIGlzIGFu
IGFuY2VzdG9yIG9mIHRoaXMsIG90aGVyd2lzZSBmYWxzZQotICAgIGlmICghb3RoZXIuaGFzQ2hp
bGROb2RlcygpIHx8IGluRG9jdW1lbnQoKSAhPSBvdGhlci5pbkRvY3VtZW50KCkpCisgICAgaWYg
KCFvdGhlci5oYXNDaGlsZE5vZGVzKCkgfHwgaXNDb25uZWN0ZWQoKSAhPSBvdGhlci5pc0Nvbm5l
Y3RlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKG90aGVyLmlzRG9jdW1lbnRO
b2RlKCkpCi0gICAgICAgIHJldHVybiAmZG9jdW1lbnQoKSA9PSAmb3RoZXIgJiYgIWlzRG9jdW1l
bnROb2RlKCkgJiYgaW5Eb2N1bWVudCgpOworICAgICAgICByZXR1cm4gJmRvY3VtZW50KCkgPT0g
Jm90aGVyICYmICFpc0RvY3VtZW50Tm9kZSgpICYmIGlzQ29ubmVjdGVkKCk7CiAgICAgZm9yIChj
b25zdCBhdXRvKiBhbmNlc3RvciA9IHBhcmVudE5vZGUoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0g
YW5jZXN0b3ItPnBhcmVudE5vZGUoKSkgewogICAgICAgICBpZiAoYW5jZXN0b3IgPT0gJm90aGVy
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjIwLDkgKzEyMjAsOSBAQCBOb2RlJiBO
b2RlOjpnZXRSb290Tm9kZShjb25zdCBHZXRSb290Tm9kZU9wdGlvbnMmIG9wdGlvbnMpIGNvbnN0
CiAKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgTm9kZTo6aW5zZXJ0ZWRJbnRv
KENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQogewotICAgIEFTU0VSVChpbnNlcnRpb25Q
b2ludC5pbkRvY3VtZW50KCkgfHwgaXNDb250YWluZXJOb2RlKCkpOwotICAgIGlmIChpbnNlcnRp
b25Qb2ludC5pbkRvY3VtZW50KCkpCi0gICAgICAgIHNldEZsYWcoSW5Eb2N1bWVudEZsYWcpOwor
ICAgIEFTU0VSVChpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgpIHx8IGlzQ29udGFpbmVyTm9k
ZSgpKTsKKyAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaXNDb25uZWN0ZWQoKSkKKyAgICAgICAgc2V0
RmxhZyhJc0Nvbm5lY3RlZEZsYWcpOwogICAgIGlmIChwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkt
PmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgIHNldEZsYWcoSXNJblNoYWRvd1RyZWVGbGFnKTsK
IApAQCAtMTIzMyw5ICsxMjMzLDkgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVz
dCBOb2RlOjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG8KIAogdm9pZCBO
b2RlOjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKLSAgICBB
U1NFUlQoaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpIHx8IGlzQ29udGFpbmVyTm9kZSgpKTsK
LSAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpKQotICAgICAgICBjbGVhckZsYWco
SW5Eb2N1bWVudEZsYWcpOworICAgIEFTU0VSVChpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgp
IHx8IGlzQ29udGFpbmVyTm9kZSgpKTsKKyAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaXNDb25uZWN0
ZWQoKSkKKyAgICAgICAgY2xlYXJGbGFnKElzQ29ubmVjdGVkRmxhZyk7CiAgICAgaWYgKGlzSW5T
aGFkb3dUcmVlKCkgJiYgIXRyZWVTY29wZSgpLnJvb3ROb2RlKCkuaXNTaGFkb3dSb290KCkpCiAg
ICAgICAgIGNsZWFyRmxhZyhJc0luU2hhZG93VHJlZUZsYWcpOwogfQpAQCAtMTU5OCw4ICsxNTk4
LDggQEAgdW5zaWduZWQgc2hvcnQgTm9kZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24oTm9kZSYg
b3RoZXJOb2RlKQogCiAgICAgLy8gSWYgb25lIG5vZGUgaXMgaW4gdGhlIGRvY3VtZW50IGFuZCB0
aGUgb3RoZXIgaXMgbm90LCB3ZSBtdXN0IGJlIGRpc2Nvbm5lY3RlZC4KICAgICAvLyBJZiB0aGUg
bm9kZXMgaGF2ZSBkaWZmZXJlbnQgb3duaW5nIGRvY3VtZW50cywgdGhleSBtdXN0IGJlIGRpc2Nv
bm5lY3RlZC4gIE5vdGUgdGhhdCB3ZSBhdm9pZAotICAgIC8vIGNvbXBhcmluZyBBdHRyIG5vZGVz
IGhlcmUsIHNpbmNlIHRoZXkgcmV0dXJuIGZhbHNlIGZyb20gaW5Eb2N1bWVudCgpIGFsbCB0aGUg
dGltZSAod2hpY2ggc2VlbXMgbGlrZSBhIGJ1ZykuCi0gICAgaWYgKHN0YXJ0MS0+aW5Eb2N1bWVu
dCgpICE9IHN0YXJ0Mi0+aW5Eb2N1bWVudCgpIHx8ICZzdGFydDEtPnRyZWVTY29wZSgpICE9ICZz
dGFydDItPnRyZWVTY29wZSgpKQorICAgIC8vIGNvbXBhcmluZyBBdHRyIG5vZGVzIGhlcmUsIHNp
bmNlIHRoZXkgcmV0dXJuIGZhbHNlIGZyb20gaXNDb25uZWN0ZWQoKSBhbGwgdGhlIHRpbWUgKHdo
aWNoIHNlZW1zIGxpa2UgYSBidWcpLgorICAgIGlmIChzdGFydDEtPmlzQ29ubmVjdGVkKCkgIT0g
c3RhcnQyLT5pc0Nvbm5lY3RlZCgpIHx8ICZzdGFydDEtPnRyZWVTY29wZSgpICE9ICZzdGFydDIt
PnRyZWVTY29wZSgpKQogICAgICAgICByZXR1cm4gY29tcGFyZURldGFjaGVkRWxlbWVudHNQb3Np
dGlvbigqdGhpcywgb3RoZXJOb2RlKTsKIAogICAgIC8vIFdlIG5lZWQgdG8gZmluZCBhIGNvbW1v
biBhbmNlc3RvciBjb250YWluZXIsIGFuZCB0aGVuIGNvbXBhcmUgdGhlIGluZGljZXMgb2YgdGhl
IHR3byBpbW1lZGlhdGUgY2hpbGRyZW4uCkBAIC0yMzk3LDcgKzIzOTcsNyBAQCB2b2lkIE5vZGU6
OnVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3VudEZvckluc2VydGlvbigpIGNvbnN0
CiAKIGJvb2wgTm9kZTo6aW5SZW5kZXJlZERvY3VtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
aW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCkuaGFzTGl2aW5nUmVuZGVyVHJlZSgpOworICAgIHJl
dHVybiBpc0Nvbm5lY3RlZCgpICYmIGRvY3VtZW50KCkuaGFzTGl2aW5nUmVuZGVyVHJlZSgpOwog
fQogCiB2b2lkKiBOb2RlOjpvcGFxdWVSb290U2xvdygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBj
Y2MxZDBhZmU4MmU4YTViZDI2ZjYzYmFjNjdmZjhkNDU5YjdmMzJjLi4zN2E3ZjVkZmY4YTMxNDhk
NDdjZWY5ZGFlNGI5MWYzOTNhYTMzNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTM3MiwxNCArMzcyLDE0
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgcHRyZGlmZl90IHRyZWVTY29wZU1lbW9yeU9mZnNldCgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihOb2RlLCBtX3RyZWVTY29wZSk7IH0KIAogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGlzIG5vZGUgaXMgYXNzb2NpYXRlZCB3aXRoIGEgZG9jdW1lbnQg
YW5kIGlzIGluIGl0cyBhc3NvY2lhdGVkIGRvY3VtZW50J3MKLSAgICAvLyBub2RlIHRyZWUsIGZh
bHNlIG90aGVyd2lzZS4KLSAgICBib29sIGluRG9jdW1lbnQoKSBjb25zdCAKKyAgICAvLyBub2Rl
IHRyZWUsIGZhbHNlIG90aGVyd2lzZSAoaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNjb25u
ZWN0ZWQpLgorICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdAogICAgIHsgCi0gICAgICAgIHJl
dHVybiBnZXRGbGFnKEluRG9jdW1lbnRGbGFnKTsKKyAgICAgICAgcmV0dXJuIGdldEZsYWcoSXND
b25uZWN0ZWRGbGFnKTsKICAgICB9CiAgICAgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJlZSgp
IGNvbnN0OwogICAgIGJvb2wgaXNJblNoYWRvd1RyZWUoKSBjb25zdCB7IHJldHVybiBnZXRGbGFn
KElzSW5TaGFkb3dUcmVlRmxhZyk7IH0KLSAgICBib29sIGlzSW5UcmVlU2NvcGUoKSBjb25zdCB7
IHJldHVybiBnZXRGbGFnKHN0YXRpY19jYXN0PE5vZGVGbGFncz4oSW5Eb2N1bWVudEZsYWcgfCBJ
c0luU2hhZG93VHJlZUZsYWcpKTsgfQorICAgIGJvb2wgaXNJblRyZWVTY29wZSgpIGNvbnN0IHsg
cmV0dXJuIGdldEZsYWcoc3RhdGljX2Nhc3Q8Tm9kZUZsYWdzPihJc0Nvbm5lY3RlZEZsYWcgfCBJ
c0luU2hhZG93VHJlZUZsYWcpKTsgfQogCiAgICAgYm9vbCBpc0RvY3VtZW50VHlwZU5vZGUoKSBj
b25zdCB7IHJldHVybiBub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZUEVfTk9ERTsgfQogICAgIHZp
cnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHB1YmxpYzoKICAgICAvLyBkaXNwYXRjaGluZy4KICAg
ICAvLwogICAgIC8vIFdlYktpdCBub3RpZmllcyB0aGlzIGNhbGxiYWNrIHJlZ2FyZGxlc3MgaWYg
dGhlIHN1YnRyZWUgb2YgdGhlIG5vZGUgaXMgYSBkb2N1bWVudCB0cmVlIG9yIGEgZmxvYXRpbmcg
c3VidHJlZS4KLSAgICAvLyBJbXBsZW1lbnRhdGlvbiBjYW4gZGV0ZXJtaW5lIHRoZSB0eXBlIG9m
IHN1YnRyZWUgYnkgc2VlaW5nIGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkuCisgICAgLy8g
SW1wbGVtZW50YXRpb24gY2FuIGRldGVybWluZSB0aGUgdHlwZSBvZiBzdWJ0cmVlIGJ5IHNlZWlu
ZyBpbnNlcnRpb25Qb2ludC0+aXNDb25uZWN0ZWQoKS4KICAgICAvLyBGb3IgYSBwZXJmb3JtYW5j
ZSByZWFzb24sIG5vdGlmaWNhdGlvbnMgYXJlIGRlbGl2ZXJlZCBvbmx5IHRvIENvbnRhaW5lck5v
ZGUgc3ViY2xhc3NlcyBpZiB0aGUgaW5zZXJ0aW9uUG9pbnQgaXMgb3V0IG9mIGRvY3VtZW50Lgog
ICAgIC8vCiAgICAgLy8gVGhlcmUgaXMgYW5vdGhlciBjYWxsYmFjayBuYW1lZCBmaW5pc2hlZElu
c2VydGluZ1N1YnRyZWUoKSwgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCBkZXNjZW5kYW50cyBh
cmUgbm90aWZpZWQuCkBAIC01NzMsNyArNTczLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBJc0hU
TUxGbGFnID0gMSA8PCA0LAogICAgICAgICBJc1NWR0ZsYWcgPSAxIDw8IDUsCiAgICAgICAgIENo
aWxkTmVlZHNTdHlsZVJlY2FsY0ZsYWcgPSAxIDw8IDcsCi0gICAgICAgIEluRG9jdW1lbnRGbGFn
ID0gMSA8PCA4LAorICAgICAgICBJc0Nvbm5lY3RlZEZsYWcgPSAxIDw8IDgsCiAgICAgICAgIElz
TGlua0ZsYWcgPSAxIDw8IDksCiAgICAgICAgIElzVXNlckFjdGlvbkVsZW1lbnQgPSAxIDw8IDEw
LAogICAgICAgICBIYXNSYXJlRGF0YUZsYWcgPSAxIDw8IDExLApAQCAtNjE3LDEzICs2MTcsMTMg
QEAgcHJvdGVjdGVkOgogICAgICAgICBDcmVhdGVUZXh0ID0gRGVmYXVsdE5vZGVGbGFncyB8IElz
VGV4dEZsYWcsCiAgICAgICAgIENyZWF0ZUNvbnRhaW5lciA9IERlZmF1bHROb2RlRmxhZ3MgfCBJ
c0NvbnRhaW5lckZsYWcsIAogICAgICAgICBDcmVhdGVFbGVtZW50ID0gQ3JlYXRlQ29udGFpbmVy
IHwgSXNFbGVtZW50RmxhZywgCi0gICAgICAgIENyZWF0ZVBzZXVkb0VsZW1lbnQgPSAgQ3JlYXRl
RWxlbWVudCB8IEluRG9jdW1lbnRGbGFnLAorICAgICAgICBDcmVhdGVQc2V1ZG9FbGVtZW50ID0g
IENyZWF0ZUVsZW1lbnQgfCBJc0Nvbm5lY3RlZEZsYWcsCiAgICAgICAgIENyZWF0ZVNoYWRvd1Jv
b3QgPSBDcmVhdGVDb250YWluZXIgfCBJc0RvY3VtZW50RnJhZ21lbnRGbGFnIHwgSXNJblNoYWRv
d1RyZWVGbGFnLAogICAgICAgICBDcmVhdGVEb2N1bWVudEZyYWdtZW50ID0gQ3JlYXRlQ29udGFp
bmVyIHwgSXNEb2N1bWVudEZyYWdtZW50RmxhZywKICAgICAgICAgQ3JlYXRlU3R5bGVkRWxlbWVu
dCA9IENyZWF0ZUVsZW1lbnQgfCBJc1N0eWxlZEVsZW1lbnRGbGFnLCAKICAgICAgICAgQ3JlYXRl
SFRNTEVsZW1lbnQgPSBDcmVhdGVTdHlsZWRFbGVtZW50IHwgSXNIVE1MRmxhZywKICAgICAgICAg
Q3JlYXRlU1ZHRWxlbWVudCA9IENyZWF0ZVN0eWxlZEVsZW1lbnQgfCBJc1NWR0ZsYWcgfCBIYXND
dXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3NGbGFnLAotICAgICAgICBDcmVhdGVEb2N1bWVudCA9
IENyZWF0ZUNvbnRhaW5lciB8IEluRG9jdW1lbnRGbGFnLAorICAgICAgICBDcmVhdGVEb2N1bWVu
dCA9IENyZWF0ZUNvbnRhaW5lciB8IElzQ29ubmVjdGVkRmxhZywKICAgICAgICAgQ3JlYXRlRWRp
dGluZ1RleHQgPSBDcmVhdGVUZXh0IHwgSXNFZGl0aW5nVGV4dE9yVW5kZWZpbmVkQ3VzdG9tRWxl
bWVudEZsYWcsCiAgICAgICAgIENyZWF0ZU1hdGhNTEVsZW1lbnQgPSBDcmVhdGVTdHlsZWRFbGVt
ZW50IHwgSXNNYXRoTUxGbGFnCiAgICAgfTsKQEAgLTc2MSw3ICs3NjEsNyBAQCBpbmxpbmUgdm9p
ZCogTm9kZTo6b3BhcXVlUm9vdCgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFBvc3NpYmxlIHJh
Y2U/CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTcx
MwotICAgIGlmIChpbkRvY3VtZW50KCkpCisgICAgaWYgKGlzQ29ubmVjdGVkKCkpCiAgICAgICAg
IHJldHVybiAmZG9jdW1lbnQoKTsKICAgICByZXR1cm4gb3BhcXVlUm9vdFNsb3coKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmlkbAppbmRleCA3ODRhOWVmNTUwODIwYWVjMGUwZWQyNGQ3NWMxMjU4Mzk3ZTA0NDQw
Li5kNzM4ZjJhM2RhNThmZmUwZWRjZGY4MTA1ZWU5N2ViODIxNDM5NjdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aWRsCkBAIC04OCw3ICs4OCw3IEBACiAgICAgYm9vbGVhbiBjb250YWlucyhOb2RlPyBvdGhlcik7
CiAKICAgICBbRW5hYmxlZEF0UnVudGltZT1TaGFkb3dET01dIE5vZGUgZ2V0Um9vdE5vZGUob3B0
aW9uYWwgR2V0Um9vdE5vZGVPcHRpb25zIG9wdGlvbnMpOwotICAgIFtFbmFibGVkQXRSdW50aW1l
PVNoYWRvd0RPTSwgSW1wbGVtZW50ZWRBcz1pbkRvY3VtZW50XSByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiBpc0Nvbm5lY3RlZDsKKyAgICBbRW5hYmxlZEF0UnVudGltZT1TaGFkb3dET01dIHJl
YWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzQ29ubmVjdGVkOwogCiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIEVsZW1lbnQgcGFyZW50RWxlbWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCmluZGV4
IDg2MzIzZmU4NGYxOWU0NjkwZDRiZDQwMmMyZjE4MTAyNjc3N2QwODMuLmY3YzQyYmI4ZTAzYjRi
M2E0YTliNDQ4MjY4ZTY0ODI5YTliODI4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCkBAIC0xMjYs
NyArMTI2LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAh
bV9hbmNob3JOb2RlOyB9CiAgICAgYm9vbCBpc05vdE51bGwoKSBjb25zdCB7IHJldHVybiBtX2Fu
Y2hvck5vZGU7IH0KLSAgICBib29sIGlzT3JwaGFuKCkgY29uc3QgeyByZXR1cm4gbV9hbmNob3JO
b2RlICYmICFtX2FuY2hvck5vZGUtPmluRG9jdW1lbnQoKTsgfQorICAgIGJvb2wgaXNPcnBoYW4o
KSBjb25zdCB7IHJldHVybiBtX2FuY2hvck5vZGUgJiYgIW1fYW5jaG9yTm9kZS0+aXNDb25uZWN0
ZWQoKTsgfQogCiAgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IDlhZDllN2IzNTJhZThmYzYz
OTk2NThiZjI5NGQzZTUwOTg3NmRkZDguLjkyYzMzMjI1NzA4MTQzOTk4MDg1OGE5NjhjNmFiY2Nk
NzI1NTdmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
Y3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6flByb2Nlc3NpbmdJ
bnN0cnVjdGlvbigpCiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAgICAgIG1fY2FjaGVkU2hl
ZXQtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiAKLSAgICBpZiAoaW5Eb2N1bWVudCgpKQorICAgIGlm
IChpc0Nvbm5lY3RlZCgpKQogICAgICAgICBkb2N1bWVudCgpLnN0eWxlU2NvcGUoKS5yZW1vdmVT
dHlsZVNoZWV0Q2FuZGlkYXRlTm9kZSgqdGhpcyk7CiB9CiAKQEAgLTE4OCw3ICsxODgsNyBAQCBi
b29sIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2hlZXRMb2FkZWQoKQogCiB2b2lkIFByb2Nlc3Np
bmdJbnN0cnVjdGlvbjo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0
IFVSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHls
ZVNoZWV0KiBzaGVldCkKIHsKLSAgICBpZiAoIWluRG9jdW1lbnQoKSkgeworICAgIGlmICghaXND
b25uZWN0ZWQoKSkgewogICAgICAgICBBU1NFUlQoIW1fc2hlZXQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjph
ZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykKIE5vZGU6
Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjppbnNl
cnRlZEludG8oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgQ2hhcmFjdGVy
RGF0YTo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKLSAgICBpZiAoIWluc2VydGlvblBv
aW50LmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIWluc2VydGlvblBvaW50LmlzQ29ubmVjdGVkKCkp
CiAgICAgICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogICAgIGRvY3VtZW50KCkuc3R5bGVTY29w
ZSgpLmFkZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlKCp0aGlzLCBtX2NyZWF0ZWRCeVBhcnNlcik7
CiAgICAgY2hlY2tTdHlsZVNoZWV0KCk7CkBAIC0yNjMsNyArMjYzLDcgQEAgTm9kZTo6SW5zZXJ0
aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246Omluc2VydGVkSW50
byhDb250YWluZXIKIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpyZW1vdmVkRnJvbShDb250
YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBDaGFyYWN0ZXJEYXRhOjpyZW1vdmVk
RnJvbShpbnNlcnRpb25Qb2ludCk7Ci0gICAgaWYgKCFpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50
KCkpCisgICAgaWYgKCFpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgZG9jdW1lbnQoKS5zdHlsZVNjb3BlKCkucmVtb3ZlU3R5bGVTaGVldENh
bmRpZGF0ZU5vZGUoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Jhbmdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5kZXggNzMzN2Q0MjRjYTkwZGJm
NWNkN2YyNmI5MGNmZjhjZmE4MTkxOTk3Yy4uZTQ2MjY2YTJmN2JhNDhlNWEyZTAyMDc5MWEwOGEy
Y2QwOTc4ZGM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgRXhjZXB0
aW9uT3I8c2hvcnQ+IFJhbmdlOjpjb21wYXJlUG9pbnQoTm9kZSYgcmVmTm9kZSwgdW5zaWduZWQg
b2Zmc2V0KSBjb25zdAogICAgIGlmIChjaGVja05vZGVSZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgLy8gRE9NNCBzcGVjIHJlcXVpcmVzIHVzIHRvIGNoZWNrIHdoZXRoZXIgcmVmTm9k
ZSBhbmQgc3RhcnQgY29udGFpbmVyIGhhdmUgdGhlIHNhbWUgcm9vdCBmaXJzdAogICAgICAgICAv
LyBidXQgd2UgZG8gaXQgaW4gdGhlIHJldmVyc2Ugb3JkZXIgdG8gYXZvaWQgTyhuKSBvcGVyYXRp
b24gaGVyZSBpbiBjb21tb24gY2FzZS4KLSAgICAgICAgaWYgKCFyZWZOb2RlLmluRG9jdW1lbnQo
KSAmJiAhY29tbW9uQW5jZXN0b3JDb250YWluZXIoJnJlZk5vZGUsICZzdGFydENvbnRhaW5lcigp
KSkKKyAgICAgICAgaWYgKCFyZWZOb2RlLmlzQ29ubmVjdGVkKCkgJiYgIWNvbW1vbkFuY2VzdG9y
Q29udGFpbmVyKCZyZWZOb2RlLCAmc3RhcnRDb250YWluZXIoKSkpCiAgICAgICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgV1JPTkdfRE9DVU1FTlRfRVJSIH07CiAgICAgICAgIHJldHVybiBjaGVj
a05vZGVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIH0KQEAgLTI5Miw3ICsyOTIsNyBA
QCBFeGNlcHRpb25PcjxSYW5nZTo6Q29tcGFyZVJlc3VsdHM+IFJhbmdlOjpjb21wYXJlTm9kZShO
b2RlJiByZWZOb2RlKSBjb25zdAogICAgIC8vIFRoaXMgbWV0aG9kIHJldHVybnMgMCwgMSwgMiwg
b3IgMyBiYXNlZCBvbiBpZiB0aGUgbm9kZSBpcyBiZWZvcmUsIGFmdGVyLAogICAgIC8vIGJlZm9y
ZSBhbmQgYWZ0ZXIoc3Vycm91bmRzKSwgb3IgaW5zaWRlIHRoZSByYW5nZSwgcmVzcGVjdGl2ZWx5
CiAKLSAgICBpZiAoIXJlZk5vZGUuaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKCFyZWZOb2RlLmlz
Q29ubmVjdGVkKCkpIHsKICAgICAgICAgLy8gRmlyZWZveCBkb2Vzbid0IHRocm93IGFuIGV4Y2Vw
dGlvbiBmb3IgdGhpcyBjYXNlOyBpdCByZXR1cm5zIDAuCiAgICAgICAgIHJldHVybiBOT0RFX0JF
Rk9SRTsKICAgICB9CkBAIC00NzMsNyArNDczLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUmFuZ2U6
OmRlbGV0ZUNvbnRlbnRzKCkKIAogRXhjZXB0aW9uT3I8Ym9vbD4gUmFuZ2U6OmludGVyc2VjdHNO
b2RlKE5vZGUmIHJlZk5vZGUpIGNvbnN0CiB7Ci0gICAgaWYgKCFyZWZOb2RlLmluRG9jdW1lbnQo
KSB8fCAmcmVmTm9kZS5kb2N1bWVudCgpICE9ICZvd25lckRvY3VtZW50KCkpCisgICAgaWYgKCFy
ZWZOb2RlLmlzQ29ubmVjdGVkKCkgfHwgJnJlZk5vZGUuZG9jdW1lbnQoKSAhPSAmb3duZXJEb2N1
bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBDb250YWluZXJOb2RlKiBwYXJl
bnROb2RlID0gcmVmTm9kZS5wYXJlbnROb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVu
dC5jcHAKaW5kZXggMGJkYTNiOTdkZThiMDM0NjA1ZmM1MTQzODM1M2Y0MTQ4MGQyYjA0MC4uZDAx
OGM1ZDg4MmQ3M2I5MGRmMDIwNTNiMDU0ZTUxMTVlOWI3ZDhkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFbGVtZW50LmNwcApAQCAtNzQsNyArNzQsNyBAQCBTY3JpcHRFbGVtZW50OjpTY3JpcHRF
bGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgcGFyc2VySW5zZXJ0ZWQsIGJvb2wgYWxyZWFk
eQogCiBib29sIFNjcmlwdEVsZW1lbnQ6OnNob3VsZENhbGxGaW5pc2hlZEluc2VydGluZ1N1YnRy
ZWUoQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7Ci0gICAgcmV0dXJuIGluc2VydGlv
blBvaW50LmluRG9jdW1lbnQoKSAmJiAhbV9wYXJzZXJJbnNlcnRlZDsKKyAgICByZXR1cm4gaW5z
ZXJ0aW9uUG9pbnQuaXNDb25uZWN0ZWQoKSAmJiAhbV9wYXJzZXJJbnNlcnRlZDsKIH0KIAogdm9p
ZCBTY3JpcHRFbGVtZW50OjpmaW5pc2hlZEluc2VydGluZ1N1YnRyZWUoKQpAQCAtODUsNyArODUs
NyBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmZpbmlzaGVkSW5zZXJ0aW5nU3VidHJlZSgpCiAKIHZv
aWQgU2NyaXB0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKCkKIHsKLSAgICBpZiAoIW1fcGFyc2Vy
SW5zZXJ0ZWQgJiYgbV9lbGVtZW50LmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIW1fcGFyc2VySW5z
ZXJ0ZWQgJiYgbV9lbGVtZW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHByZXBhcmVTY3JpcHQo
KTsgLy8gRklYTUU6IFByb3ZpZGUgYSByZWFsIHN0YXJ0aW5nIGxpbmUgbnVtYmVyIGhlcmUuCiB9
CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIFNjcmlwdEVsZW1lbnQ6OnByZXBhcmVTY3JpcHQo
Y29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uLCBMZWdhYwogICAgIGlmICgh
aGFzU291cmNlQXR0cmlidXRlKCkgJiYgIW1fZWxlbWVudC5maXJzdENoaWxkKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGlmICghbV9lbGVtZW50LmluRG9jdW1lbnQoKSkKKyAgICBp
ZiAoIW1fZWxlbWVudC5pc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBTY3JpcHRUeXBlIHNjcmlwdFR5cGUgPSBTY3JpcHRUeXBlOjpDbGFzc2ljOwpAQCAtMjg1LDcg
KzI4NSw3IEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6cmVxdWVzdENsYXNzaWNTY3JpcHQoY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpCiAgICAgUmVmPERvY3VtZW50PiBvcmlnaW5hbERvY3VtZW50KG1f
ZWxlbWVudC5kb2N1bWVudCgpKTsKICAgICBpZiAoIW1fZWxlbWVudC5kaXNwYXRjaEJlZm9yZUxv
YWRFdmVudChzb3VyY2VVUkwpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYm9vbCBkaWRF
dmVudExpc3RlbmVyRGlzY29ubmVjdFRoaXNFbGVtZW50ID0gIW1fZWxlbWVudC5pbkRvY3VtZW50
KCkgfHwgJm1fZWxlbWVudC5kb2N1bWVudCgpICE9IG9yaWdpbmFsRG9jdW1lbnQucHRyKCk7Cisg
ICAgYm9vbCBkaWRFdmVudExpc3RlbmVyRGlzY29ubmVjdFRoaXNFbGVtZW50ID0gIW1fZWxlbWVu
dC5pc0Nvbm5lY3RlZCgpIHx8ICZtX2VsZW1lbnQuZG9jdW1lbnQoKSAhPSBvcmlnaW5hbERvY3Vt
ZW50LnB0cigpOwogICAgIGlmIChkaWRFdmVudExpc3RlbmVyRGlzY29ubmVjdFRoaXNFbGVtZW50
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTMyNSw3ICszMjUsNyBAQCBib29sIFNjcmlw
dEVsZW1lbnQ6OnJlcXVlc3RNb2R1bGVTY3JpcHQoY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRT
dGFydFBvc2l0aW9uKQogICAgICAgICBpZiAoIW1fZWxlbWVudC5kaXNwYXRjaEJlZm9yZUxvYWRF
dmVudChzb3VyY2VVUkwpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGJv
b2wgZGlkRXZlbnRMaXN0ZW5lckRpc2Nvbm5lY3RUaGlzRWxlbWVudCA9ICFtX2VsZW1lbnQuaW5E
b2N1bWVudCgpIHx8ICZtX2VsZW1lbnQuZG9jdW1lbnQoKSAhPSBvcmlnaW5hbERvY3VtZW50LnB0
cigpOworICAgICAgICBib29sIGRpZEV2ZW50TGlzdGVuZXJEaXNjb25uZWN0VGhpc0VsZW1lbnQg
PSAhbV9lbGVtZW50LmlzQ29ubmVjdGVkKCkgfHwgJm1fZWxlbWVudC5kb2N1bWVudCgpICE9IG9y
aWdpbmFsRG9jdW1lbnQucHRyKCk7CiAgICAgICAgIGlmIChkaWRFdmVudExpc3RlbmVyRGlzY29u
bmVjdFRoaXNFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00MzMsNyAr
NDMzLDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlUGVuZGluZ1NjcmlwdChQZW5kaW5n
U2NyaXB0JiBwZW5kaW5nU2NyaXB0KQogCiBib29sIFNjcmlwdEVsZW1lbnQ6Omlnbm9yZXNMb2Fk
UmVxdWVzdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYWxyZWFkeVN0YXJ0ZWQgfHwgbV9pc0V4
dGVybmFsU2NyaXB0IHx8IG1fcGFyc2VySW5zZXJ0ZWQgfHwgIW1fZWxlbWVudC5pbkRvY3VtZW50
KCk7CisgICAgcmV0dXJuIG1fYWxyZWFkeVN0YXJ0ZWQgfHwgbV9pc0V4dGVybmFsU2NyaXB0IHx8
IG1fcGFyc2VySW5zZXJ0ZWQgfHwgIW1fZWxlbWVudC5pc0Nvbm5lY3RlZCgpOwogfQogCiBib29s
IFNjcmlwdEVsZW1lbnQ6OmlzU2NyaXB0Rm9yRXZlbnRTdXBwb3J0ZWQoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0UnVubmVyLmNwcAppbmRleCAxZDUyZTU4ODhlMjcxYjBlODFiMzA1ZjFlZjBj
OWMyOGRjNWZjNGI1Li4wYzY2NmFhNTJjYmMxN2E3OTM5MGE4ZmVjNDJhMzI0M2ExYmE1NmEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcApAQCAtNTksNyArNTksNyBAQCBTY3JpcHRS
dW5uZXI6On5TY3JpcHRSdW5uZXIoKQogCiB2b2lkIFNjcmlwdFJ1bm5lcjo6cXVldWVTY3JpcHRG
b3JFeGVjdXRpb24oU2NyaXB0RWxlbWVudCYgc2NyaXB0RWxlbWVudCwgTG9hZGFibGVTY3JpcHQm
IGxvYWRhYmxlU2NyaXB0LCBFeGVjdXRpb25UeXBlIGV4ZWN1dGlvblR5cGUpCiB7Ci0gICAgQVNT
RVJUKHNjcmlwdEVsZW1lbnQuZWxlbWVudCgpLmluRG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKHNj
cmlwdEVsZW1lbnQuZWxlbWVudCgpLmlzQ29ubmVjdGVkKCkpOwogCiAgICAgbV9kb2N1bWVudC5p
bmNyZW1lbnRMb2FkRXZlbnREZWxheUNvdW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1
ZXJ5LmNwcAppbmRleCA0OGE5N2M2YmM5N2E2ZTc1MDI1MTI4NDUwZGY4NTA1M2ZiN2NjNDE2Li5m
NDliYzMwYzU4ODM0ZDdlODkyM2NmODA2ODMwZmE3ZWM4N2ZiYzM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NlbGVjdG9yUXVlcnkuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgRWxlbWVudCogU2VsZWN0b3JE
YXRhTGlzdDo6cXVlcnlGaXJzdChDb250YWluZXJOb2RlJiByb290Tm9kZSkgY29uc3QKIAogc3Rh
dGljIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvckZvcklkTG9va3VwKGNvbnN0IENvbnRhaW5l
ck5vZGUmIHJvb3ROb2RlLCBjb25zdCBDU1NTZWxlY3RvciYgZmlyc3RTZWxlY3RvcikKIHsKLSAg
ICBpZiAoIXJvb3ROb2RlLmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIXJvb3ROb2RlLmlzQ29ubmVj
dGVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChyb290Tm9kZS5kb2N1bWVu
dCgpLmluUXVpcmtzTW9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0Niw3ICsy
NDYsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUZhc3RQ
YXRoRm9ySWRTZWxlY3Rvcihjb25zdCBDb250YWluZQogCiBzdGF0aWMgQ29udGFpbmVyTm9kZSYg
ZmlsdGVyUm9vdEJ5SWQoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IENTU1NlbGVjdG9y
JiBmaXJzdFNlbGVjdG9yKQogewotICAgIGlmICghcm9vdE5vZGUuaW5Eb2N1bWVudCgpKQorICAg
IGlmICghcm9vdE5vZGUuaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuIHJvb3ROb2RlOwog
ICAgIGlmIChyb290Tm9kZS5kb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpKQogICAgICAgICByZXR1
cm4gcm9vdE5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggMDVkMjFjMmM2Y2I0
YmU1YjQ2NTNhODQ1OWM0ZmNiNTc5ZWI4ZmQwZS4uZjU0ZmQ3NGIyOTczODg0Y2Q5YWUyNGU1OTAz
MWEwNmE1NTM3NGZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtNzEsNyArNzEs
NyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlx
dWVfcHRyPFNsb3RBc3NpZ25tZW50PiYmIHNsbwogCiBTaGFkb3dSb290Ojp+U2hhZG93Um9vdCgp
CiB7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSkKKyAgICBpZiAoaXNDb25uZWN0ZWQoKSkKICAgICAg
ICAgZG9jdW1lbnQoKS5kaWRSZW1vdmVJbkRvY3VtZW50U2hhZG93Um9vdCgqdGhpcyk7CiAKICAg
ICAvLyBXZSBjYW5ub3QgbGV0IENvbnRhaW5lck5vZGUgZGVzdHJ1Y3RvciBjYWxsIHdpbGxCZURl
bGV0ZWRGcm9tKCkKQEAgLTg4LDkgKzg4LDkgQEAgU2hhZG93Um9vdDo6flNoYWRvd1Jvb3QoKQog
CiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNoYWRvd1Jvb3Q6Omluc2VydGVk
SW50byhDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKLSAgICBib29sIHdhc0luRG9j
dW1lbnQgPSBpbkRvY3VtZW50KCk7CisgICAgYm9vbCB3YXNJbkRvY3VtZW50ID0gaXNDb25uZWN0
ZWQoKTsKICAgICBEb2N1bWVudEZyYWdtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQp
OwotICAgIGlmIChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkgJiYgIXdhc0luRG9jdW1lbnQp
CisgICAgaWYgKGluc2VydGlvblBvaW50LmlzQ29ubmVjdGVkKCkgJiYgIXdhc0luRG9jdW1lbnQp
CiAgICAgICAgIGRvY3VtZW50KCkuZGlkSW5zZXJ0SW5Eb2N1bWVudFNoYWRvd1Jvb3QoKnRoaXMp
OwogICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogfQpAQCAtOTgsNyArOTgsNyBAQCBOb2RlOjpJ
bnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNoYWRvd1Jvb3Q6Omluc2VydGVkSW50byhDb250
YWluZXJOb2RlJiBpbnNlcgogdm9pZCBTaGFkb3dSb290OjpyZW1vdmVkRnJvbShDb250YWluZXJO
b2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBEb2N1bWVudEZyYWdtZW50OjpyZW1vdmVkRnJv
bShpbnNlcnRpb25Qb2ludCk7Ci0gICAgaWYgKGluc2VydGlvblBvaW50LmluRG9jdW1lbnQoKSAm
JiAhaW5Eb2N1bWVudCgpKQorICAgIGlmIChpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgpICYm
ICFpc0Nvbm5lY3RlZCgpKQogICAgICAgICBkb2N1bWVudCgpLmRpZFJlbW92ZUluRG9jdW1lbnRT
aGFkb3dSb290KCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Ry
ZWVTY29wZUFkb3B0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIu
Y3BwCmluZGV4IDgzMDdhYWNmMTg1ZDU2Y2VmZjQwNjE5NTY1Nzk3MGVjZGJmYjA0MWEuLjc1MWQy
YTgxMzFkYjhkOTU4OGEwOTIzOGRjOGM1MTk4YmJhNTdkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlQWRvcHRlci5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBpbmxpbmUgdm9pZCBUcmVl
U2NvcGVBZG9wdGVyOjp1cGRhdGVUcmVlU2NvcGUoTm9kZSYgbm9kZSkgY29uc3QKIAogaW5saW5l
IHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZU5vZGVUb05ld0RvY3VtZW50KE5vZGUmIG5vZGUs
IERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBjb25zdAogewot
ICAgIEFTU0VSVCghbm9kZS5pbkRvY3VtZW50KCkgfHwgJm9sZERvY3VtZW50ICE9ICZuZXdEb2N1
bWVudCk7CisgICAgQVNTRVJUKCFub2RlLmlzQ29ubmVjdGVkKCkgfHwgJm9sZERvY3VtZW50ICE9
ICZuZXdEb2N1bWVudCk7CiAKICAgICBuZXdEb2N1bWVudC5pbmNyZW1lbnRSZWZlcmVuY2luZ05v
ZGVDb3VudCgpOwogICAgIG9sZERvY3VtZW50LmRlY3JlbWVudFJlZmVyZW5jaW5nTm9kZUNvdW50
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50Q29t
bWFuZC5jcHAKaW5kZXggMWI0OWE4MzgwOGVhOTc2N2U1ZGI3ZGU4ZGFhNTRhZTkwMTMzODZlNS4u
NjczMTg4MGVhZmE3Yzk3MmUwZjZmZTdlMDUxMjgwZmE2ZmQyZDMzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcApAQCAtMTU3
LDExICsxNTcsMTEgQEAgdm9pZCBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQ6OmZvcm1hdFNlbGVj
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZTZWwKICAgICAgICAgLy8gaW5kZW50
SW50b0Jsb2NrcXVvdGUgY291bGQgbW92ZSBtb3JlIHRoYW4gb25lIHBhcmFncmFwaCBpZiB0aGUg
cGFyYWdyYXBoCiAgICAgICAgIC8vIGlzIGluIGEgbGlzdCBpdGVtIG9yIGEgdGFibGUuIEFzIGEg
cmVzdWx0LCBlbmRBZnRlclNlbGVjdGlvbiBjb3VsZCByZWZlciB0byBhIHBvc2l0aW9uCiAgICAg
ICAgIC8vIG5vIGxvbmdlciBpbiB0aGUgZG9jdW1lbnQuCi0gICAgICAgIGlmIChlbmRBZnRlclNl
bGVjdGlvbi5pc05vdE51bGwoKSAmJiAhZW5kQWZ0ZXJTZWxlY3Rpb24uZGVlcEVxdWl2YWxlbnQo
KS5hbmNob3JOb2RlKCktPmluRG9jdW1lbnQoKSkKKyAgICAgICAgaWYgKGVuZEFmdGVyU2VsZWN0
aW9uLmlzTm90TnVsbCgpICYmICFlbmRBZnRlclNlbGVjdGlvbi5kZWVwRXF1aXZhbGVudCgpLmFu
Y2hvck5vZGUoKS0+aXNDb25uZWN0ZWQoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAv
LyBTYW5pdHkgY2hlY2s6IE1ha2Ugc3VyZSBvdXIgbW92ZVBhcmFncmFwaCBjYWxscyBkaWRuJ3Qg
cmVtb3ZlIGVuZE9mTmV4dFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2Rl
KCkKICAgICAgICAgLy8gSWYgc29tZWhvdyB3ZSBkaWQsIHJldHVybiB0byBwcmV2ZW50IGNyYXNo
ZXMuCi0gICAgICAgIGlmIChlbmRPZk5leHRQYXJhZ3JhcGguaXNOb3ROdWxsKCkgJiYgIWVuZE9m
TmV4dFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKS0+aW5Eb2N1bWVudCgp
KSB7CisgICAgICAgIGlmIChlbmRPZk5leHRQYXJhZ3JhcGguaXNOb3ROdWxsKCkgJiYgIWVuZE9m
TmV4dFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKS0+aXNDb25uZWN0ZWQo
KSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlT
dHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHAKaW5kZXggZWEwYzMxNTUyOTRlZjdjNTBmOWE1Yjg4ODMxYTMzNmJjMWMyN2UzNy4uZWZj
MWY4ODM5OTQzYTU3MGRjMzU1ZTNiZGMyODcyN2E1ZjRiNTBkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTc1NSw3ICs3NTUsNyBAQCBzdHJ1
Y3QgSW5saW5lUnVuVG9BcHBseVN0eWxlIHsKIAogICAgIGJvb2wgc3RhcnRBbmRFbmRBcmVTdGls
bEluRG9jdW1lbnQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXJ0ICYmIGVuZCAmJiBzdGFy
dC0+aW5Eb2N1bWVudCgpICYmIGVuZC0+aW5Eb2N1bWVudCgpOworICAgICAgICByZXR1cm4gc3Rh
cnQgJiYgZW5kICYmIHN0YXJ0LT5pc0Nvbm5lY3RlZCgpICYmIGVuZC0+aXNDb25uZWN0ZWQoKTsK
ICAgICB9CiAKICAgICBSZWZQdHI8Tm9kZT4gc3RhcnQ7CkBAIC04NzAsNyArODcwLDcgQEAgdm9p
ZCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlQ29uZmxpY3RpbmdJbmxpbmVTdHlsZUZyb21SdW4o
RWRpdGluZ1N0eWxlKiBzdHlsZSwKIHsKICAgICBBU1NFUlQocnVuU3RhcnQgJiYgcnVuRW5kKTsK
ICAgICBSZWZQdHI8Tm9kZT4gbmV4dCA9IHJ1blN0YXJ0OwotICAgIGZvciAoUmVmUHRyPE5vZGU+
IG5vZGUgPSBuZXh0OyBub2RlICYmIG5vZGUtPmluRG9jdW1lbnQoKSAmJiBub2RlICE9IHBhc3RF
bmROb2RlOyBub2RlID0gbmV4dCkgeworICAgIGZvciAoUmVmUHRyPE5vZGU+IG5vZGUgPSBuZXh0
OyBub2RlICYmIG5vZGUtPmlzQ29ubmVjdGVkKCkgJiYgbm9kZSAhPSBwYXN0RW5kTm9kZTsgbm9k
ZSA9IG5leHQpIHsKICAgICAgICAgaWYgKGVkaXRpbmdJZ25vcmVzQ29udGVudCgqbm9kZSkpIHsK
ICAgICAgICAgICAgIEFTU0VSVCghbm9kZS0+Y29udGFpbnMocGFzdEVuZE5vZGUuZ2V0KCkpKTsK
ICAgICAgICAgICAgIG5leHQgPSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbigq
bm9kZSk7CkBAIC04ODQsNyArODg0LDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3Zl
Q29uZmxpY3RpbmdJbmxpbmVTdHlsZUZyb21SdW4oRWRpdGluZ1N0eWxlKiBzdHlsZSwKICAgICAg
ICAgUmVmUHRyPE5vZGU+IG5leHRTaWJsaW5nID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKICAgICAg
ICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHBhcmVudCA9IG5vZGUtPnBhcmVudE5vZGUoKTsKICAg
ICAgICAgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgZG93bmNhc3Q8SFRNTEVs
ZW1lbnQ+KG5vZGUuZ2V0KCkpLCBSZW1vdmVBbHdheXMpOwotICAgICAgICBpZiAoIW5vZGUtPmlu
RG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoIW5vZGUtPmlzQ29ubmVjdGVkKCkpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBXZSBtaWdodCBuZWVkIHRvIHVwZGF0ZSB0aGUgc3RhcnQgYW5kIHRo
ZSBlbmQgb2YgY3VycmVudCBzZWxlY3Rpb24gaGVyZSBidXQgbmVlZCBhIHRlc3QuCiAgICAgICAg
ICAgICBpZiAocnVuU3RhcnQgPT0gbm9kZSkKICAgICAgICAgICAgICAgICBydW5TdGFydCA9IHBy
ZXZpb3VzU2libGluZyA/IHByZXZpb3VzU2libGluZy0+bmV4dFNpYmxpbmcoKSA6IHBhcmVudC0+
Zmlyc3RDaGlsZCgpOwpAQCAtOTE0LDcgKzkxNCw3IEBAIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6
OnJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoRWRpdGluZ1N0eWxlKiBzdHlsZSwgUGFzc1Jl
CiAgICAgaWYgKHJlbW92ZUltcGxpY2l0bHlTdHlsZWRFbGVtZW50KHN0eWxlLCBlbGVtZW50Lmdl
dCgpLCBtb2RlLCBleHRyYWN0ZWRTdHlsZSkpCiAgICAgICAgIHJlbW92ZWQgPSB0cnVlOwogCi0g
ICAgaWYgKCFlbGVtZW50LT5pbkRvY3VtZW50KCkpCisgICAgaWYgKCFlbGVtZW50LT5pc0Nvbm5l
Y3RlZCgpKQogICAgICAgICByZXR1cm4gcmVtb3ZlZDsKIAogICAgIC8vIElmIHRoZSBub2RlIHdh
cyBjb252ZXJ0ZWQgdG8gYSBzcGFuLCB0aGUgc3BhbiBtYXkgc3RpbGwgY29udGFpbiByZWxldmFu
dApAQCAtOTMxLDcgKzkzMSw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlcGxhY2VXaXRo
U3Bhbk9yUmVtb3ZlSWZXaXRob3V0QXR0cmlidXRlcyhIVE1MRWxlbWVudComCiAgICAgICAgIHJl
bW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW4oZWxlbSk7CiAgICAgZWxzZSB7CiAgICAgICAgIEhU
TUxFbGVtZW50KiBuZXdTcGFuRWxlbWVudCA9IHJlcGxhY2VFbGVtZW50V2l0aFNwYW5QcmVzZXJ2
aW5nQ2hpbGRyZW5BbmRBdHRyaWJ1dGVzKGVsZW0pOwotICAgICAgICBBU1NFUlQobmV3U3BhbkVs
ZW1lbnQgJiYgbmV3U3BhbkVsZW1lbnQtPmluRG9jdW1lbnQoKSk7CisgICAgICAgIEFTU0VSVChu
ZXdTcGFuRWxlbWVudCAmJiBuZXdTcGFuRWxlbWVudC0+aXNDb25uZWN0ZWQoKSk7CiAgICAgICAg
IGVsZW0gPSBuZXdTcGFuRWxlbWVudDsKICAgICB9CiB9CkBAIC0xMDk3LDggKzEwOTcsOCBAQCB2
b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVJbmxpbmVTdHlsZShFZGl0aW5nU3R5bGUqIHN0
eWxlLCBjb25zdCBQb3NpdGlvbiYgcwogewogICAgIEFTU0VSVChzdGFydC5pc05vdE51bGwoKSk7
CiAgICAgQVNTRVJUKGVuZC5pc05vdE51bGwoKSk7Ci0gICAgQVNTRVJUKHN0YXJ0LmFuY2hvck5v
ZGUoKS0+aW5Eb2N1bWVudCgpKTsKLSAgICBBU1NFUlQoZW5kLmFuY2hvck5vZGUoKS0+aW5Eb2N1
bWVudCgpKTsKKyAgICBBU1NFUlQoc3RhcnQuYW5jaG9yTm9kZSgpLT5pc0Nvbm5lY3RlZCgpKTsK
KyAgICBBU1NFUlQoZW5kLmFuY2hvck5vZGUoKS0+aXNDb25uZWN0ZWQoKSk7CiAgICAgQVNTRVJU
KGNvbXBhcmVQb3NpdGlvbnMoc3RhcnQsIGVuZCkgPD0gMCk7CiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBhc3NlcnQgdGhhdCBzdGFydC9lbmQgYXJlIG5vdCBpbiB0aGUgbWlkZGxlIG9mIGEgdGV4
dCBub2RlLgogCkBAIC0xMTQ4LDcgKzExNDgsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpy
ZW1vdmVJbmxpbmVTdHlsZShFZGl0aW5nU3R5bGUqIHN0eWxlLCBjb25zdCBQb3NpdGlvbiYgcwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50
KHN0eWxlLCBlbGVtZW50LnB0cigpLCBSZW1vdmVJZk5lZWRlZCwgc3R5bGVUb1B1c2hEb3duLmdl
dCgpKTsKLSAgICAgICAgICAgIGlmICghZWxlbWVudC0+aW5Eb2N1bWVudCgpKSB7CisgICAgICAg
ICAgICBpZiAoIWVsZW1lbnQtPmlzQ29ubmVjdGVkKCkpIHsKICAgICAgICAgICAgICAgICBpZiAo
cy5kZXByZWNhdGVkTm9kZSgpID09IGVsZW1lbnQucHRyKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gU2luY2UgZWxlbSBtdXN0IGhhdmUgYmVlbiBmdWxseSBzZWxlY3RlZCwgYW5kIGl0IGlz
IGF0IHRoZSBzdGFydAogICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGUgc2VsZWN0aW9uLCBp
dCBpcyBjbGVhciB3ZSBjYW4gc2V0IHRoZSBuZXcgcyBvZmZzZXQgdG8gMC4KQEAgLTE0MDEsNyAr
MTQwMSw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFkZEJsb2NrU3R5bGUoY29uc3QgU3R5
bGVDaGFuZ2UmIHN0eWxlQ2hhbmdlLCBIVE1MRWxlbWVuCiAKIHZvaWQgQXBwbHlTdHlsZUNvbW1h
bmQ6OmFkZElubGluZVN0eWxlSWZOZWVkZWQoRWRpdGluZ1N0eWxlKiBzdHlsZSwgUGFzc1JlZlB0
cjxOb2RlPiBwYXNzZWRTdGFydCwgUGFzc1JlZlB0cjxOb2RlPiBwYXNzZWRFbmQsIEVBZGRTdHls
ZWRFbGVtZW50IGFkZFN0eWxlZEVsZW1lbnQpCiB7Ci0gICAgaWYgKCFwYXNzZWRTdGFydCB8fCAh
cGFzc2VkRW5kIHx8ICFwYXNzZWRTdGFydC0+aW5Eb2N1bWVudCgpIHx8ICFwYXNzZWRFbmQtPmlu
RG9jdW1lbnQoKSkKKyAgICBpZiAoIXBhc3NlZFN0YXJ0IHx8ICFwYXNzZWRFbmQgfHwgIXBhc3Nl
ZFN0YXJ0LT5pc0Nvbm5lY3RlZCgpIHx8ICFwYXNzZWRFbmQtPmlzQ29ubmVjdGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxOb2RlPiBzdGFydCA9IHBhc3NlZFN0YXJ0OwpAQCAt
MTQzMCw4ICsxNDMwLDggQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHls
ZUNoYW5nZShQYXNzUmVmUHRyPE5vZGU+IHBhc3NlZFN0YXJ0LCBQYXMKIHsKICAgICBSZWZQdHI8
Tm9kZT4gc3RhcnROb2RlID0gcGFzc2VkU3RhcnQ7CiAgICAgUmVmUHRyPE5vZGU+IGVuZE5vZGUg
PSBwYXNzZWRFbmQ7Ci0gICAgQVNTRVJUKHN0YXJ0Tm9kZS0+aW5Eb2N1bWVudCgpKTsKLSAgICBB
U1NFUlQoZW5kTm9kZS0+aW5Eb2N1bWVudCgpKTsKKyAgICBBU1NFUlQoc3RhcnROb2RlLT5pc0Nv
bm5lY3RlZCgpKTsKKyAgICBBU1NFUlQoZW5kTm9kZS0+aXNDb25uZWN0ZWQoKSk7CiAKICAgICAv
LyBGaW5kIGFwcHJvcHJpYXRlIGZvbnQgYW5kIHNwYW4gZWxlbWVudHMgdG9wLWRvd24uCiAgICAg
SFRNTEZvbnRFbGVtZW50KiBmb250Q29udGFpbmVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggZjdmZDQ4NDhiN2U4
MzYzZTFkOWIwMWVhMzk3NzhhYmI1YmM4ZDQ4NS4uNjFkZGJmNTBlNTgyYzNlNDBiMTZiZjJiNDU2
NGE3NjQyYTc1MmRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21t
YW5kOjppbnNlcnROb2RlQXQoUGFzc1JlZlB0cjxOb2RlPiBpbnNlcnRDaGlsZCwgY29uc3QgUG9z
aQogICAgICAgICBzcGxpdFRleHROb2RlKGRvd25jYXN0PFRleHQ+KHJlZkNoaWxkKSwgb2Zmc2V0
KTsKIAogICAgICAgICAvLyBNdXRhdGlvbiBldmVudHMgKGJ1ZyAyMjYzNCkgZnJvbSB0aGUgdGV4
dCBub2RlIGluc2VydGlvbiBtYXkgaGF2ZSByZW1vdmVkIHRoZSByZWZDaGlsZAotICAgICAgICBp
ZiAoIXJlZkNoaWxkLT5pbkRvY3VtZW50KCkpCisgICAgICAgIGlmICghcmVmQ2hpbGQtPmlzQ29u
bmVjdGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGluc2VydE5vZGVCZWZvcmUo
aW5zZXJ0Q2hpbGQsIHJlZkNoaWxkKTsKICAgICB9IGVsc2UKQEAgLTY0OCw3ICs2NDgsNyBAQCBI
VE1MRWxlbWVudCogQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VFbGVtZW50V2l0aFNwYW5Q
cmVzZXJ2aW5nQ2hpbGRyZW5BbmRBdAogICAgIC8vIFJldHVybmluZyBhIHJhdyBwb2ludGVyIGhl
cmUgaXMgT0sgYmVjYXVzZSB0aGUgY29tbWFuZCBpcyByZXRhaW5lZCBieQogICAgIC8vIGFwcGx5
Q29tbWFuZFRvQ29tcG9zaXRlICh0aHVzIHJldGFpbmluZyB0aGUgc3BhbiksIGFuZCB0aGUgc3Bh
biBpcyBhbHNvCiAgICAgLy8gaW4gdGhlIERPTSB0cmVlLCBhbmQgdGh1cyBhbGl2ZSB3aGllIGl0
IGhhcyBhIHBhcmVudC4KLSAgICBBU1NFUlQoY29tbWFuZC0+c3BhbkVsZW1lbnQoKS0+aW5Eb2N1
bWVudCgpKTsKKyAgICBBU1NFUlQoY29tbWFuZC0+c3BhbkVsZW1lbnQoKS0+aXNDb25uZWN0ZWQo
KSk7CiAgICAgcmV0dXJuIGNvbW1hbmQtPnNwYW5FbGVtZW50KCk7CiB9CiAKQEAgLTEyMzgsNyAr
MTIzOCw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnB1c2hBbmNob3JFbGVtZW50RG93
bihFbGVtZW50JiBhbmNob3JFbGVtZW50KQogICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxl
U2VsZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGUoJmFuY2hvckVsZW1lbnQpKTsK
ICAgICBhcHBseVN0eWxlZEVsZW1lbnQoJmFuY2hvckVsZW1lbnQpOwogICAgIC8vIENsb25lcyBv
ZiBhbmNob3JFbGVtZW50IGhhdmUgYmVlbiBwdXNoZWQgZG93biwgbm93IHJlbW92ZSBpdC4KLSAg
ICBpZiAoYW5jaG9yRWxlbWVudC5pbkRvY3VtZW50KCkpCisgICAgaWYgKGFuY2hvckVsZW1lbnQu
aXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbigmYW5j
aG9yRWxlbWVudCk7CiB9CiAKQEAgLTE0ODUsOSArMTQ4NSw5IEBAIHZvaWQgQ29tcG9zaXRlRWRp
dENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBh
cmFncmFwCiAgICAgZnJhbWUoKS5lZGl0b3IoKS5jbGVhck1pc3NwZWxsaW5nc0FuZEJhZEdyYW1t
YXIoZW5kaW5nU2VsZWN0aW9uKCkpOwogICAgIGRlbGV0ZVNlbGVjdGlvbihmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSk7CiAKLSAgICBBU1NFUlQoZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQo
KS5hbmNob3JOb2RlKCktPmluRG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKGRlc3RpbmF0aW9uLmRl
ZXBFcXVpdmFsZW50KCkuYW5jaG9yTm9kZSgpLT5pc0Nvbm5lY3RlZCgpKTsKICAgICBjbGVhbnVw
QWZ0ZXJEZWxldGlvbihkZXN0aW5hdGlvbik7Ci0gICAgQVNTRVJUKGRlc3RpbmF0aW9uLmRlZXBF
cXVpdmFsZW50KCkuYW5jaG9yTm9kZSgpLT5pbkRvY3VtZW50KCkpOworICAgIEFTU0VSVChkZXN0
aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKS0+aXNDb25uZWN0ZWQoKSk7CiAK
ICAgICAvLyBBZGQgYSBiciBpZiBwcnVuaW5nIGFuIGVtcHR5IGJsb2NrIGxldmVsIGVsZW1lbnQg
Y2F1c2VkIGEgY29sbGFwc2UuIEZvciBleGFtcGxlOgogICAgIC8vIGZvb14KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDY0M2Yw
YjllM2EzNTdkYjRlMTliNjY4MjBjNmQwODVmNmU5OGMzNTguLjgyNDJjMjYyMWMyYjExMzcxZjAy
MGJlZGYwYmIxMTJmOWJmMWZkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9E
ZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNTM2LDcgKzUzNiw3IEBAIHZvaWQgRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlR2VuZXJhbERlbGV0ZSgpCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChtX2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRl
ZE5vZGUoKSAhPSBzdGFydE5vZGUgJiYgIW1fdXBzdHJlYW1TdGFydC5kZXByZWNhdGVkTm9kZSgp
LT5pc0Rlc2NlbmRhbnRPZihtX2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUoKSkgJiYgbV9k
b3duc3RyZWFtRW5kLmFuY2hvck5vZGUoKS0+aW5Eb2N1bWVudCgpICYmIG1fZG93bnN0cmVhbUVu
ZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID49IGNhcmV0TWluT2Zmc2V0KCptX2Rvd25zdHJl
YW1FbmQuZGVwcmVjYXRlZE5vZGUoKSkpIHsKKyAgICAgICAgaWYgKG1fZG93bnN0cmVhbUVuZC5k
ZXByZWNhdGVkTm9kZSgpICE9IHN0YXJ0Tm9kZSAmJiAhbV91cHN0cmVhbVN0YXJ0LmRlcHJlY2F0
ZWROb2RlKCktPmlzRGVzY2VuZGFudE9mKG1fZG93bnN0cmVhbUVuZC5kZXByZWNhdGVkTm9kZSgp
KSAmJiBtX2Rvd25zdHJlYW1FbmQuYW5jaG9yTm9kZSgpLT5pc0Nvbm5lY3RlZCgpICYmIG1fZG93
bnN0cmVhbUVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID49IGNhcmV0TWluT2Zmc2V0KCpt
X2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUoKSkpIHsKICAgICAgICAgICAgIGlmIChtX2Rv
d25zdHJlYW1FbmQuYXRMYXN0RWRpdGluZ1Bvc2l0aW9uRm9yTm9kZSgpICYmICFjYW5IYXZlQ2hp
bGRyZW5Gb3JFZGl0aW5nKCptX2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUoKSkpIHsKICAg
ICAgICAgICAgICAgICAvLyBUaGUgbm9kZSBpdHNlbGYgaXMgZnVsbHkgc2VsZWN0ZWQsIG5vdCBq
dXN0IGl0cyBjb250ZW50cy4gIERlbGV0ZSBpdC4KICAgICAgICAgICAgICAgICByZW1vdmVOb2Rl
KG1fZG93bnN0cmVhbUVuZC5kZXByZWNhdGVkTm9kZSgpKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCB2
b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZUdlbmVyYWxEZWxldGUoKQogICAgICAg
ICAgICAgICAgIC8vIGtub3cgaG93IG1hbnkgY2hpbGRyZW4gdG8gcmVtb3ZlLgogICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBNYWtlIG1fdXBzdHJlYW1TdGFydCBhIHBvc2l0aW9uIHdlIHVwZGF0
ZSBhcyB3ZSByZW1vdmUgY29udGVudCwgdGhlbiB3ZSBjYW4KICAgICAgICAgICAgICAgICAvLyBh
bHdheXMga25vdyB3aGljaCBjaGlsZHJlbiB0byByZW1vdmUuCi0gICAgICAgICAgICAgICAgfSBl
bHNlIGlmICghKHN0YXJ0Tm9kZVdhc0Rlc2NlbmRhbnRPZkVuZE5vZGUgJiYgIW1fdXBzdHJlYW1T
dGFydC5hbmNob3JOb2RlKCktPmluRG9jdW1lbnQoKSkpIHsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKCEoc3RhcnROb2RlV2FzRGVzY2VuZGFudE9mRW5kTm9kZSAmJiAhbV91cHN0cmVhbVN0
YXJ0LmFuY2hvck5vZGUoKS0+aXNDb25uZWN0ZWQoKSkpIHsKICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgb2Zmc2V0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdXBzdHJlYW1T
dGFydC5kZXByZWNhdGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihtX2Rvd25zdHJlYW1FbmQuZGVw
cmVjYXRlZE5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIG4gPSBtX3Vw
c3RyZWFtU3RhcnQuZGVwcmVjYXRlZE5vZGUoKTsKQEAgLTYwNSw5ICs2MDUsOSBAQCB2b2lkIERl
bGV0ZVNlbGVjdGlvbkNvbW1hbmQ6Om1lcmdlUGFyYWdyYXBocygpCiAgICAgQVNTRVJUKCFtX3By
dW5lU3RhcnRCbG9ja0lmTmVjZXNzYXJ5KTsKIAogICAgIC8vIEZJWE1FOiBEZWxldGlvbiBzaG91
bGQgYWRqdXN0IHNlbGVjdGlvbiBlbmRwb2ludHMgYXMgaXQgcmVtb3ZlcyBub2RlcyBzbyB0aGF0
IHdlIG5ldmVyIGdldCBpbnRvIHRoaXMgc3RhdGUgKDQwOTk4MzkpLgotICAgIGlmICghbV9kb3du
c3RyZWFtRW5kLmFuY2hvck5vZGUoKS0+aW5Eb2N1bWVudCgpIHx8ICFtX3Vwc3RyZWFtU3RhcnQu
YW5jaG9yTm9kZSgpLT5pbkRvY3VtZW50KCkpCisgICAgaWYgKCFtX2Rvd25zdHJlYW1FbmQuYW5j
aG9yTm9kZSgpLT5pc0Nvbm5lY3RlZCgpIHx8ICFtX3Vwc3RyZWFtU3RhcnQuYW5jaG9yTm9kZSgp
LT5pc0Nvbm5lY3RlZCgpKQogICAgICAgICAgcmV0dXJuOwotICAgICAgICAgCisKICAgICAvLyBG
SVhNRTogVGhlIGRlbGV0aW9uIGFsZ29yaXRobSBzaG91bGRuJ3QgbGV0IHRoaXMgaGFwcGVuLgog
ICAgIGlmIChjb21wYXJlUG9zaXRpb25zKG1fdXBzdHJlYW1TdGFydCwgbV9kb3duc3RyZWFtRW5k
KSA+IDApCiAgICAgICAgIHJldHVybjsKQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lkIERlbGV0ZVNl
bGVjdGlvbkNvbW1hbmQ6Om1lcmdlUGFyYWdyYXBocygpCiAKIHZvaWQgRGVsZXRlU2VsZWN0aW9u
Q29tbWFuZDo6cmVtb3ZlUHJldmlvdXNseVNlbGVjdGVkRW1wdHlUYWJsZVJvd3MoKQogewotICAg
IGlmIChtX2VuZFRhYmxlUm93ICYmIG1fZW5kVGFibGVSb3ctPmluRG9jdW1lbnQoKSAmJiBtX2Vu
ZFRhYmxlUm93ICE9IG1fc3RhcnRUYWJsZVJvdykgeworICAgIGlmIChtX2VuZFRhYmxlUm93ICYm
IG1fZW5kVGFibGVSb3ctPmlzQ29ubmVjdGVkKCkgJiYgbV9lbmRUYWJsZVJvdyAhPSBtX3N0YXJ0
VGFibGVSb3cpIHsKICAgICAgICAgTm9kZSogcm93ID0gbV9lbmRUYWJsZVJvdy0+cHJldmlvdXNT
aWJsaW5nKCk7CiAgICAgICAgIHdoaWxlIChyb3cgJiYgcm93ICE9IG1fc3RhcnRUYWJsZVJvdykg
ewogICAgICAgICAgICAgUmVmUHRyPE5vZGU+IHByZXZpb3VzUm93ID0gcm93LT5wcmV2aW91c1Np
YmxpbmcoKTsKQEAgLTY4OSw3ICs2ODksNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6
OnJlbW92ZVByZXZpb3VzbHlTZWxlY3RlZEVtcHR5VGFibGVSb3dzKCkKICAgICB9CiAgICAgCiAg
ICAgLy8gUmVtb3ZlIGVtcHR5IHJvd3MgYWZ0ZXIgdGhlIHN0YXJ0IHJvdy4KLSAgICBpZiAobV9z
dGFydFRhYmxlUm93ICYmIG1fc3RhcnRUYWJsZVJvdy0+aW5Eb2N1bWVudCgpICYmIG1fc3RhcnRU
YWJsZVJvdyAhPSBtX2VuZFRhYmxlUm93KSB7CisgICAgaWYgKG1fc3RhcnRUYWJsZVJvdyAmJiBt
X3N0YXJ0VGFibGVSb3ctPmlzQ29ubmVjdGVkKCkgJiYgbV9zdGFydFRhYmxlUm93ICE9IG1fZW5k
VGFibGVSb3cpIHsKICAgICAgICAgTm9kZSogcm93ID0gbV9zdGFydFRhYmxlUm93LT5uZXh0U2li
bGluZygpOwogICAgICAgICB3aGlsZSAocm93ICYmIHJvdyAhPSBtX2VuZFRhYmxlUm93KSB7CiAg
ICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbmV4dFJvdyA9IHJvdy0+bmV4dFNpYmxpbmcoKTsKQEAg
LTY5OCw4ICs2OTgsOCBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVByZXZp
b3VzbHlTZWxlY3RlZEVtcHR5VGFibGVSb3dzKCkKICAgICAgICAgICAgIHJvdyA9IG5leHRSb3cu
Z2V0KCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgaWYgKG1fZW5kVGFibGVSb3cgJiYg
bV9lbmRUYWJsZVJvdy0+aW5Eb2N1bWVudCgpICYmIG1fZW5kVGFibGVSb3cgIT0gbV9zdGFydFRh
YmxlUm93KQorCisgICAgaWYgKG1fZW5kVGFibGVSb3cgJiYgbV9lbmRUYWJsZVJvdy0+aXNDb25u
ZWN0ZWQoKSAmJiBtX2VuZFRhYmxlUm93ICE9IG1fc3RhcnRUYWJsZVJvdykgewogICAgICAgICBp
ZiAoaXNUYWJsZVJvd0VtcHR5KG1fZW5kVGFibGVSb3cuZ2V0KCkpKSB7CiAgICAgICAgICAgICAv
LyBEb24ndCByZW1vdmUgbV9lbmRUYWJsZVJvdyBpZiBpdCdzIHdoZXJlIHdlJ3JlIHB1dHRpbmcg
dGhlIGVuZGluZyBzZWxlY3Rpb24uCiAgICAgICAgICAgICBpZiAoIW1fZW5kaW5nUG9zaXRpb24u
ZGVwcmVjYXRlZE5vZGUoKS0+aXNEZXNjZW5kYW50T2YoKm1fZW5kVGFibGVSb3cpKSB7CkBAIC03
MDksNiArNzA5LDcgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVQcmV2aW91
c2x5U2VsZWN0ZWRFbXB0eVRhYmxlUm93cygpCiAgICAgICAgICAgICAgICAgQ29tcG9zaXRlRWRp
dENvbW1hbmQ6OnJlbW92ZU5vZGUobV9lbmRUYWJsZVJvdy5nZXQoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6Y2Fs
Y3VsYXRlVHlwaW5nU3R5bGVBZnRlckRlbGV0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
aW5kZXggNmRhMzA1YTMwNjE0YTI5YzdkOGUyMTM4M2Y1Nzk2YTE5YmQ5ZjgzZS4uYTdkNjhmNjY4
NDBlOTQwNDdkZjUxOWEzM2RiNDdhN2RkZjYyZGExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcApAQCAtMzQzNyw3ICszNDM3LDcgQEAgdm9pZCBFZGl0b3I6OmVkaXRvclVJVXBkYXRlVGlt
ZXJGaXJlZCgpCiAgICAgICAgIC8vIFdoZW4gdHlwaW5nIHdlIGNoZWNrIHNwZWxsaW5nIGVsc2V3
aGVyZSwgc28gZG9uJ3QgcmVkbyBpdCBoZXJlLgogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgY2hh
bmdlIGluIHNlbGVjdGlvbiByZXN1bHRpbmcgZnJvbSBhIGRlbGV0ZSBvcGVyYXRpb24sCiAgICAg
ICAgIC8vIG9sZFNlbGVjdGlvbiBtYXkgbm8gbG9uZ2VyIGJlIGluIHRoZSBkb2N1bWVudC4KLSAg
ICAgICAgaWYgKG1fZWRpdG9yVUlVcGRhdGVUaW1lclNob3VsZENoZWNrU3BlbGxpbmdBbmRHcmFt
bWFyICYmIG9sZFNlbGVjdGlvbi5pc0NvbnRlbnRFZGl0YWJsZSgpICYmIG9sZFNlbGVjdGlvbi5z
dGFydCgpLmRlcHJlY2F0ZWROb2RlKCkgJiYgb2xkU2VsZWN0aW9uLnN0YXJ0KCkuYW5jaG9yTm9k
ZSgpLT5pbkRvY3VtZW50KCkpIHsKKyAgICAgICAgaWYgKG1fZWRpdG9yVUlVcGRhdGVUaW1lclNo
b3VsZENoZWNrU3BlbGxpbmdBbmRHcmFtbWFyICYmIG9sZFNlbGVjdGlvbi5pc0NvbnRlbnRFZGl0
YWJsZSgpICYmIG9sZFNlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkgJiYgb2xkU2Vs
ZWN0aW9uLnN0YXJ0KCkuYW5jaG9yTm9kZSgpLT5pc0Nvbm5lY3RlZCgpKSB7CiAgICAgICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gb2xkU3RhcnQob2xkU2VsZWN0aW9uLnZpc2libGVTdGFydCgpKTsK
ICAgICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gb2xkQWRqYWNlbnRXb3JkcyA9IFZpc2libGVT
ZWxlY3Rpb24oc3RhcnRPZldvcmQob2xkU3RhcnQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSwgZW5k
T2ZXb3JkKG9sZFN0YXJ0LCBSaWdodFdvcmRJZk9uQm91bmRhcnkpKTsKICAgICAgICAgICAgIGlm
IChvbGRBZGphY2VudFdvcmRzICE9IG5ld0FkamFjZW50V29yZHMpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggZjgwYjA4NGFlMDA4ZWRjZTlmMjY5MzFi
YjYzMGZlYjJiZGVjZTU1Ny4uODk5NWYxYmI5YzA0ODhlMWNkMjgyYzhkMjUyYzMxM2NkYmRjNTFi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTQxOSw3
ICs0MTksNyBAQCBzdGF0aWMgYm9vbCByZW1vdmluZ05vZGVSZW1vdmVzUG9zaXRpb24oTm9kZSYg
bm9kZSwgY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQogCiB2b2lkIERyYWdDYXJldENvbnRyb2xs
ZXI6Om5vZGVXaWxsQmVSZW1vdmVkKE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKCFoYXNDYXJldCgp
IHx8ICFub2RlLmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIWhhc0NhcmV0KCkgfHwgIW5vZGUuaXND
b25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFyZW1vdmluZ05vZGVSZW1v
dmVzUG9zaXRpb24obm9kZSwgbV9wb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKSkKQEAgLTQzNSw3
ICs0MzUsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpub2RlV2lsbEJlUmVtb3ZlZChOb2RlJiBu
b2RlKQogewogICAgIC8vIFRoZXJlIGNhbid0IGJlIGEgc2VsZWN0aW9uIGluc2lkZSBhIGZyYWdt
ZW50LCBzbyBpZiBhIGZyYWdtZW50J3Mgbm9kZSBpcyBiZWluZyByZW1vdmVkLAogICAgIC8vIHRo
ZSBzZWxlY3Rpb24gaW4gdGhlIGRvY3VtZW50IHRoYXQgY3JlYXRlZCB0aGUgZnJhZ21lbnQgbmVl
ZHMgbm8gYWRqdXN0bWVudC4KLSAgICBpZiAoaXNOb25lKCkgfHwgIW5vZGUuaW5Eb2N1bWVudCgp
KQorICAgIGlmIChpc05vbmUoKSB8fCAhbm9kZS5pc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICByZXNwb25kVG9Ob2RlTW9kaWZpY2F0aW9uKG5vZGUsIHJlbW92aW5nTm9kZVJl
bW92ZXNQb3NpdGlvbihub2RlLCBtX3NlbGVjdGlvbi5iYXNlKCkpLCByZW1vdmluZ05vZGVSZW1v
dmVzUG9zaXRpb24obm9kZSwgbV9zZWxlY3Rpb24uZXh0ZW50KCkpLApAQCAtNTI0LDcgKzUyNCw3
IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVBvc2l0aW9uQWZ0ZXJBZG9wdGluZ1RleHRSZXBsYWNlbWVu
dChQb3NpdGlvbiYgcG9zaXRpb24sIENoYXJhCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp0ZXh0V2Fz
UmVwbGFjZWQoQ2hhcmFjdGVyRGF0YSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBv
bGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCkKIHsKICAgICAvLyBUaGUgZnJhZ21lbnQgY2hl
Y2sgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uIFNlZSBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8zMDA2Mi4KLSAgICBpZiAoaXNOb25lKCkgfHwgIW5vZGUgfHwgIW5vZGUt
PmluRG9jdW1lbnQoKSkKKyAgICBpZiAoaXNOb25lKCkgfHwgIW5vZGUgfHwgIW5vZGUtPmlzQ29u
bmVjdGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBvc2l0aW9uIGJhc2UgPSBtX3NlbGVj
dGlvbi5iYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91
dGRlbnRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENv
bW1hbmQuY3BwCmluZGV4IGU3OGUxNmM5ODc0ZWYzOWY3MTc4ZWZmM2JhZDFlZjFjMzM0MDhkYTku
LjA3MjlmYzc3NGM0ZDJmNTgzYTJiMjgyMGVkNDJkMGI4Y2MxZDBhZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCkBAIC0yMTYsMTAgKzIx
NiwxMCBAQCB2b2lkIEluZGVudE91dGRlbnRDb21tYW5kOjpvdXRkZW50UmVnaW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgc3RhcnRPZlNlbGVjdGlvbgogICAgICAgICAvLyBvdXRkZW50UGFyYWdy
YXBoIGNvdWxkIG1vdmUgbW9yZSB0aGFuIG9uZSBwYXJhZ3JhcGggaWYgdGhlIHBhcmFncmFwaAog
ICAgICAgICAvLyBpcyBpbiBhIGxpc3QgaXRlbS4gQXMgYSByZXN1bHQsIGVuZEFmdGVyU2VsZWN0
aW9uIGFuZCBlbmRPZk5leHRQYXJhZ3JhcGgKICAgICAgICAgLy8gY291bGQgcmVmZXIgdG8gcG9z
aXRpb25zIG5vIGxvbmdlciBpbiB0aGUgZG9jdW1lbnQuCi0gICAgICAgIGlmIChlbmRBZnRlclNl
bGVjdGlvbi5pc05vdE51bGwoKSAmJiAhZW5kQWZ0ZXJTZWxlY3Rpb24uZGVlcEVxdWl2YWxlbnQo
KS5hbmNob3JOb2RlKCktPmluRG9jdW1lbnQoKSkKKyAgICAgICAgaWYgKGVuZEFmdGVyU2VsZWN0
aW9uLmlzTm90TnVsbCgpICYmICFlbmRBZnRlclNlbGVjdGlvbi5kZWVwRXF1aXZhbGVudCgpLmFu
Y2hvck5vZGUoKS0+aXNDb25uZWN0ZWQoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
IGlmIChlbmRPZk5leHRQYXJhZ3JhcGguaXNOb3ROdWxsKCkgJiYgIWVuZE9mTmV4dFBhcmFncmFw
aC5kZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKS0+aW5Eb2N1bWVudCgpKSB7CisgICAgICAg
IGlmIChlbmRPZk5leHRQYXJhZ3JhcGguaXNOb3ROdWxsKCkgJiYgIWVuZE9mTmV4dFBhcmFncmFw
aC5kZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKS0+aXNDb25uZWN0ZWQoKSkgewogICAgICAg
ICAgICAgZW5kT2ZDdXJyZW50UGFyYWdyYXBoID0gZW5kaW5nU2VsZWN0aW9uKCkuZW5kKCk7CiAg
ICAgICAgICAgICBlbmRPZk5leHRQYXJhZ3JhcGggPSBlbmRPZlBhcmFncmFwaChlbmRPZkN1cnJl
bnRQYXJhZ3JhcGgubmV4dCgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKaW5kZXggZGEzOWYyNDg3ZDBiN2Q4ZDQ0
ZjlmN2ZiYzAxMWU3NmJlOGQwNzVkNy4uODEyYzBiNDZmODJmYzZhNzUzZDBlZDBiNTg4ZDMwYzI5
OTAwZjExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJl
YWtDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVh
a0NvbW1hbmQuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtDb21t
YW5kOjpkb0FwcGx5KCkKICAgICAgICAgICAgIGRlbGV0ZUluc2lnbmlmaWNhbnRUZXh0RG93bnN0
cmVhbShlbmRpbmdQb3NpdGlvbik7CiAgICAgICAgICAgICBBU1NFUlQoIXRleHROb2RlLnJlbmRl
cmVyKCkgfHwgdGV4dE5vZGUucmVuZGVyZXIoKS0+c3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2Uo
KSk7CiAgICAgICAgICAgICAvLyBEZWxldGluZyBpbnNpZ25pZmljYW50IHdoaXRlc3BhY2Ugd2ls
bCByZW1vdmUgdGV4dE5vZGUgaWYgaXQgY29udGFpbnMgbm90aGluZyBidXQgaW5zaWduaWZpY2Fu
dCB3aGl0ZXNwYWNlLgotICAgICAgICAgICAgaWYgKHRleHROb2RlLmluRG9jdW1lbnQoKSkKKyAg
ICAgICAgICAgIGlmICh0ZXh0Tm9kZS5pc0Nvbm5lY3RlZCgpKQogICAgICAgICAgICAgICAgIGlu
c2VydFRleHRJbnRvTm9kZSgmdGV4dE5vZGUsIDAsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7
CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8VGV4dD4gbmJzcE5v
ZGUgPSBkb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCmluZGV4IDNj
MmFkYjRjMDEwYTdjZjNmZDRmMjYxYjZlMzA5ZDMwYmIyMzI3NjkuLjg5NGE3Y2ZmYzE2NDczMWUw
MTVjN2U2OTIzYmRhMTQzODNjYWNhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0TGlzdENvbW1hbmQuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBJbnNlcnRMaXN0Q29t
bWFuZDo6ZG9BcHBseSgpCiAgICAgICAgICAgICAgICAgLy8gaW5maW5pdGUgbG9vcCBhbmQgYmVj
YXVzZSB0aGVyZSBpcyBubyBtb3JlIHdvcmsgdG8gYmUgZG9uZS4KICAgICAgICAgICAgICAgICAv
LyBGSVhNRSg8cmRhcjovL3Byb2JsZW0vNTk4Mzk3ND4pOiBUaGUgZW5kaW5nU2VsZWN0aW9uKCkg
bWF5IGJlIGluY29ycmVjdCBoZXJlLiAgQ29tcHV0ZSAKICAgICAgICAgICAgICAgICAvLyB0aGUg
bmV3IGxvY2F0aW9uIG9mIGVuZE9mU2VsZWN0aW9uIGFuZCB1c2UgaXQgYXMgdGhlIGVuZCBvZiB0
aGUgbmV3IHNlbGVjdGlvbi4KLSAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0T2ZMYXN0UGFyYWdy
YXBoLmRlZXBFcXVpdmFsZW50KCkuYW5jaG9yTm9kZSgpLT5pbkRvY3VtZW50KCkpCisgICAgICAg
ICAgICAgICAgaWYgKCFzdGFydE9mTGFzdFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLmFuY2hv
ck5vZGUoKS0+aXNDb25uZWN0ZWQoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihzdGFydE9mQ3VycmVudFBhcmFncmFwaCk7
CiAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5Rm9y
U2luZ2xlUGFyYWdyYXBoKGJvb2wgZm9yY2VDcmVhdGVMaXN0LCBjb25zdCBIVAogICAgICAgICAg
ICAgLy8gTWFudWFsbHkgcmVtb3ZlIGxpc3ROb2RlIGJlY2F1c2UgbW92ZVBhcmFncmFwaFdpdGhD
bG9uZXMgc29tZXRpbWVzIGxlYXZlcyBpdCBiZWhpbmQgaW4gdGhlIGRvY3VtZW50LgogICAgICAg
ICAgICAgLy8gU2VlIHRoZSBidWcgMzM2NjggYW5kIGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0
LWxpc3Qtb3JwaGFuZWQtaXRlbS13aXRoLW5lc3RlZC1saXN0cy5odG1sLgogICAgICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgbWlnaHQgYmUgYSBidWcgaW4gbW92ZVBhcmFncmFwaFdpdGhDbG9uZXMg
b3IgZGVsZXRlU2VsZWN0aW9uLgotICAgICAgICAgICAgaWYgKGxpc3ROb2RlICYmIGxpc3ROb2Rl
LT5pbkRvY3VtZW50KCkpCisgICAgICAgICAgICBpZiAobGlzdE5vZGUgJiYgbGlzdE5vZGUtPmlz
Q29ubmVjdGVkKCkpCiAgICAgICAgICAgICAgICAgcmVtb3ZlTm9kZShsaXN0Tm9kZSk7CiAKICAg
ICAgICAgICAgIG5ld0xpc3QgPSBtZXJnZVdpdGhOZWlnaGJvcmluZ0xpc3RzKG5ld0xpc3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAppbmRleCBhMmZk
NmFkODk3ZGU0YzllOGY4ZjM4NDIxNzk5MzU3NWI1MDMzMGQ2Li4zNmM5ZjM4OTI5M2JkMzRiMjlk
YmIwM2QwMzk5MjcxMGVlZmI5ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0luc2VydFRleHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dFRleHRDb21tYW5kLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgSW5zZXJ0VGV4dENvbW1h
bmQ6OmRvQXBwbHkoKQogICAgIC8vIGFuZCBzbyBkZWxldGVJbnNpZ25pZmljYW50VGV4dCBjb3Vs
ZCByZW1vdmUgaXQuICBTYXZlIHRoZSBwb3NpdGlvbiBiZWZvcmUgdGhlIG5vZGUgaW4gY2FzZSB0
aGF0IGhhcHBlbnMuCiAgICAgUG9zaXRpb24gcG9zaXRpb25CZWZvcmVTdGFydE5vZGUocG9zaXRp
b25JblBhcmVudEJlZm9yZU5vZGUoc3RhcnRQb3NpdGlvbi5jb250YWluZXJOb2RlKCkpKTsKICAg
ICBkZWxldGVJbnNpZ25pZmljYW50VGV4dChzdGFydFBvc2l0aW9uLnVwc3RyZWFtKCksIHN0YXJ0
UG9zaXRpb24uZG93bnN0cmVhbSgpKTsKLSAgICBpZiAoIXN0YXJ0UG9zaXRpb24uYW5jaG9yTm9k
ZSgpLT5pbkRvY3VtZW50KCkpCisgICAgaWYgKCFzdGFydFBvc2l0aW9uLmFuY2hvck5vZGUoKS0+
aXNDb25uZWN0ZWQoKSkKICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHBvc2l0aW9uQmVmb3JlU3Rh
cnROb2RlOwogICAgIGlmICghc3RhcnRQb3NpdGlvbi5pc0NhbmRpZGF0ZSgpKQogICAgICAgICBz
dGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbi5kb3duc3RyZWFtKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDg4MWIxMWE0YTli
NDk4ZGQ0ZGIwMzViMDQ1YmM1OWIwYjY2ZTA5NjYuLmRiOTEwY2FmMWYwYWQyNDkxMzY2MTFiMDAw
MTk5YzI4ZjFkYzkxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNl
bGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVj
dGlvbkNvbW1hbmQuY3BwCkBAIC03MiwxNCArNzIsMTQgQEAgdm9pZCBNb3ZlU2VsZWN0aW9uQ29t
bWFuZDo6ZG9BcHBseSgpCiAgICAgLy8gc2V0IHRoZSBkZXN0aW5hdGlvbiB0byB0aGUgZW5kaW5n
IHBvaW50IGFmdGVyIHRoZSBkZWxldGlvbi4KICAgICAvLyBGaXhlczogPHJkYXI6Ly9wcm9ibGVt
LzM5MTA0MjU+IFJFR1JFU1NJT04gKE1haWwpOiBDcmFzaCBpbiBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDsgCiAgICAgLy8gICAgICAgIHNlbGVjdGlvbiBpcyBlbXB0eSwgbGVhZGluZyB0byBudWxs
IGRlcmVmCi0gICAgaWYgKCFwb3MuYW5jaG9yTm9kZSgpLT5pbkRvY3VtZW50KCkpCisgICAgaWYg
KCFwb3MuYW5jaG9yTm9kZSgpLT5pc0Nvbm5lY3RlZCgpKQogICAgICAgICBwb3MgPSBlbmRpbmdT
ZWxlY3Rpb24oKS5zdGFydCgpOwogCiAgICAgY2xlYW51cEFmdGVyRGVsZXRpb24ocG9zKTsKIAog
ICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHBvcywgZW5kaW5nU2VsZWN0
aW9uKCkuYWZmaW5pdHkoKSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CiAg
ICAgc2V0U3RhcnRpbmdTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkpOwotICAgIGlmICghcG9z
LmFuY2hvck5vZGUoKS0+aW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKCFwb3MuYW5jaG9yTm9kZSgp
LT5pc0Nvbm5lY3RlZCgpKSB7CiAgICAgICAgIC8vIERvY3VtZW50IHdhcyBtb2RpZmllZCBvdXQg
ZnJvbSB1bmRlciB1cy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKaW5kZXggYjk2
YzNhNjJlMjczNzQxYjA0MTIxOTUzZTUyMmEyMjUxM2E4NGEwOS4uZTFkMDIyM2UzZDdlNzAwYjEy
NTA0MjIyZmMwNDJjMGI3MDZjNTY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVw
bGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQ6OlJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kKFBhc3NS
ZWZQdHI8SFRNTEVsZW1lbnQ+IGUKIAogc3RhdGljIHZvaWQgc3dhcEluTm9kZVByZXNlcnZpbmdB
dHRyaWJ1dGVzQW5kQ2hpbGRyZW4oSFRNTEVsZW1lbnQmIG5ld05vZGUsIEhUTUxFbGVtZW50JiBu
b2RlVG9SZXBsYWNlKQogewotICAgIEFTU0VSVChub2RlVG9SZXBsYWNlLmluRG9jdW1lbnQoKSk7
CisgICAgQVNTRVJUKG5vZGVUb1JlcGxhY2UuaXNDb25uZWN0ZWQoKSk7CiAgICAgUmVmUHRyPENv
bnRhaW5lck5vZGU+IHBhcmVudE5vZGUgPSBub2RlVG9SZXBsYWNlLnBhcmVudE5vZGUoKTsKIAog
ICAgIC8vIEZJWE1FOiBGaXggdGhpcyB0byBzZW5kIHRoZSBwcm9wZXIgTXV0YXRpb25SZWNvcmRz
IHdoZW4gTXV0YXRpb25PYnNlcnZlcnMgYXJlIHByZXNlbnQuCkBAIC02MSw3ICs2MSw3IEBAIHN0
YXRpYyB2b2lkIHN3YXBJbk5vZGVQcmVzZXJ2aW5nQXR0cmlidXRlc0FuZENoaWxkcmVuKEhUTUxF
bGVtZW50JiBuZXdOb2RlLCBIVE1MCiAKIHZvaWQgUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQ6
OmRvQXBwbHkoKQogewotICAgIGlmICghbV9lbGVtZW50VG9SZXBsYWNlLT5pbkRvY3VtZW50KCkp
CisgICAgaWYgKCFtX2VsZW1lbnRUb1JlcGxhY2UtPmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICBpZiAoIW1fc3BhbkVsZW1lbnQpCiAgICAgICAgIG1fc3BhbkVsZW1lbnQgPSBI
VE1MU3BhbkVsZW1lbnQ6OmNyZWF0ZShtX2VsZW1lbnRUb1JlcGxhY2UtPmRvY3VtZW50KCkpOwpA
QCAtNzAsNyArNzAsNyBAQCB2b2lkIFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kOjpkb0FwcGx5
KCkKIAogdm9pZCBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZDo6ZG9VbmFwcGx5KCkKIHsKLSAg
ICBpZiAoIW1fc3BhbkVsZW1lbnQtPmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIW1fc3BhbkVsZW1l
bnQtPmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBzd2FwSW5Ob2RlUHJlc2Vy
dmluZ0F0dHJpYnV0ZXNBbmRDaGlsZHJlbigqbV9lbGVtZW50VG9SZXBsYWNlLCAqbV9zcGFuRWxl
bWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwCmluZGV4IGRmNmU5YjgxYTAzNDQ5ODliNzUzN2QwYmZmZWEzYzVjMTY4NWZk
M2EuLjJlZTM3MzI4OWY1YTY3ZDE1YWQ3ODVlZDU5MTE1ZDA5NWIyMmZiZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0x
MTIwLDcgKzExMjAsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkK
ICAgICB9CiAKICAgICAvLyBNdXRhdGlvbiBldmVudHMgKGJ1ZyAyMjYzNCkgbWF5IGhhdmUgYWxy
ZWFkeSByZW1vdmVkIHRoZSBpbnNlcnRlZCBjb250ZW50Ci0gICAgaWYgKCFyZWZOb2RlLT5pbkRv
Y3VtZW50KCkpCisgICAgaWYgKCFyZWZOb2RlLT5pc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBib29sIHBsYWluVGV4dEZyYWdtZW50ID0gaXNQbGFpblRleHRNYXJrdXAocmVm
Tm9kZS5nZXQoKSk7CkBAIC0xMTMyLDcgKzExMzIsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgaW5zZXJ0ZWROb2Rlcy5yZXNwb25kVG9Ob2RlSW5z
ZXJ0aW9uKG5vZGUuZ2V0KCkpOwogCiAgICAgICAgIC8vIE11dGF0aW9uIGV2ZW50cyAoYnVnIDIy
NjM0KSBtYXkgaGF2ZSBhbHJlYWR5IHJlbW92ZWQgdGhlIGluc2VydGVkIGNvbnRlbnQKLSAgICAg
ICAgaWYgKCFub2RlLT5pbkRvY3VtZW50KCkpCisgICAgICAgIGlmICghbm9kZS0+aXNDb25uZWN0
ZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICByZWZOb2RlID0gbm9kZTsKQEAg
LTExNDcsNyArMTE0Nyw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHko
KQogICAgICAgICBoYW5kbGVTdHlsZVNwYW5zKGluc2VydGVkTm9kZXMpOwogCiAgICAgLy8gTXV0
YXRpb24gZXZlbnRzIChidWcgMjAxNjEpIG1heSBoYXZlIGFscmVhZHkgcmVtb3ZlZCB0aGUgaW5z
ZXJ0ZWQgY29udGVudAotICAgIGlmICghaW5zZXJ0ZWROb2Rlcy5maXJzdE5vZGVJbnNlcnRlZCgp
IHx8ICFpbnNlcnRlZE5vZGVzLmZpcnN0Tm9kZUluc2VydGVkKCktPmluRG9jdW1lbnQoKSkKKyAg
ICBpZiAoIWluc2VydGVkTm9kZXMuZmlyc3ROb2RlSW5zZXJ0ZWQoKSB8fCAhaW5zZXJ0ZWROb2Rl
cy5maXJzdE5vZGVJbnNlcnRlZCgpLT5pc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZkluc2VydGVkQ29udGVudCA9IGZpcnN0UG9zaXRp
b25Jbk9yQmVmb3JlTm9kZShpbnNlcnRlZE5vZGVzLmZpcnN0Tm9kZUluc2VydGVkKCkpOwpAQCAt
MTIwMyw3ICsxMjAzLDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgp
CiAgICAgICAgIGlmIChzdGFydE9mUGFyYWdyYXBoKGVuZE9mSW5zZXJ0ZWRDb250ZW50KSA9PSBz
dGFydE9mUGFyYWdyYXBoVG9Nb3ZlKSB7CiAgICAgICAgICAgICBpbnNlcnROb2RlQXQoSFRNTEJS
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLCBlbmRPZkluc2VydGVkQ29udGVudC5kZWVwRXF1
aXZhbGVudCgpKTsKICAgICAgICAgICAgIC8vIE11dGF0aW9uIGV2ZW50cyAoYnVnIDIyNjM0KSB0
cmlnZ2VyZWQgYnkgaW5zZXJ0aW5nIHRoZSA8YnI+IG1pZ2h0IGhhdmUgcmVtb3ZlZCB0aGUgY29u
dGVudCB3ZSdyZSBhYm91dCB0byBtb3ZlCi0gICAgICAgICAgICBpZiAoIXN0YXJ0T2ZQYXJhZ3Jh
cGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JOb2RlKCktPmluRG9jdW1lbnQoKSkKKyAg
ICAgICAgICAgIGlmICghc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLmFu
Y2hvck5vZGUoKS0+aXNDb25uZWN0ZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMTI3OSw5ICsxMjc5LDkgQEAgUmVmUHRyPERhdGFUcmFuc2Zlcj4gUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdAogCiBib29s
IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpzaG91bGRSZW1vdmVFbmRCUihOb2RlKiBlbmRCUiwg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiBvcmlnaW5hbFZpc1Bvc0JlZm9yZUVuZEJSKQogewotICAg
IGlmICghZW5kQlIgfHwgIWVuZEJSLT5pbkRvY3VtZW50KCkpCisgICAgaWYgKCFlbmRCUiB8fCAh
ZW5kQlItPmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCisK
ICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyhwb3NpdGlvbkJlZm9yZU5vZGUoZW5kQlIp
KTsKICAgICAKICAgICAvLyBEb24ndCByZW1vdmUgdGhlIGJyIGlmIG5vdGhpbmcgd2FzIGluc2Vy
dGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCmlu
ZGV4IDAyM2I3NDQ1OWY2NTA2MTdhMjhhNDI3YTUzMTlhYTRmMjIzM2Q5MGYuLjUzMjQyYmJhOGRh
YmVlMDZkMWQ0YTI0ODhjMmVjNWQ5MThhNWQyOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2lu
dCkKICAgICBpZiAobV9mb3JtICYmIGVsZW1lbnQucm9vdEVsZW1lbnQoKSAhPSBtX2Zvcm0tPnJv
b3RFbGVtZW50KCkpCiAgICAgICAgIHNldEZvcm0obnVsbHB0cik7CiAKLSAgICBpZiAoIWluc2Vy
dGlvblBvaW50LmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIWluc2VydGlvblBvaW50LmlzQ29ubmVj
dGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybUF0dHIpKQpAQCAtODYsNyArODYsNyBAQCB2b2lkIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIGluc2VydGlv
blBvaW50KQogfQogCiAvLyBDb21wdXRlIHRoZSBoaWdoZXN0IGFuY2VzdG9yIGluc3RlYWQgb2Yg
Y2FsbGluZyBOb2RlOjpyb290Tm9kZSBpbiByZW1vdmVkRnJvbSAvIGZvcm1SZW1vdmVkRnJvbVRy
ZWUKLS8vIHNpbmNlIGluRG9jdW1lbnQgZmxhZyBvbiBzb21lIGZvcm0gYXNzb2NpYXRlZCBlbGVt
ZW50cyBtYXkgbm90IGhhdmUgYmVlbiB1cGRhdGVkIHlldC4KKy8vIHNpbmNlIGlzQ29ubmVjdGVk
IGZsYWcgb24gc29tZSBmb3JtIGFzc29jaWF0ZWQgZWxlbWVudHMgbWF5IG5vdCBoYXZlIGJlZW4g
dXBkYXRlZCB5ZXQuCiBzdGF0aWMgTm9kZSogY29tcHV0ZVJvb3ROb2RlKE5vZGUmIG5vZGUpCiB7
CiAgICAgTm9kZSogY3VycmVudCA9ICZub2RlOwpAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgTm9k
ZSogY29tcHV0ZVJvb3ROb2RlKE5vZGUmIG5vZGUpCiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgSFRN
TEVsZW1lbnQmIGVsZW1lbnQgPSBhc0hUTUxFbGVtZW50KCk7Ci0gICAgaWYgKGluc2VydGlvblBv
aW50LmluRG9jdW1lbnQoKSAmJiBlbGVtZW50Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oZm9ybUF0dHIpKQorICAgIGlmIChpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgpICYm
IGVsZW1lbnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JtQXR0cikpCiAg
ICAgICAgIG1fZm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gbnVsbHB0cjsKICAgICAvLyBJ
ZiB0aGUgZm9ybSBhbmQgZWxlbWVudCBhcmUgYm90aCBpbiB0aGUgc2FtZSB0cmVlLCBwcmVzZXJ2
ZSB0aGUgY29ubmVjdGlvbiB0byB0aGUgZm9ybS4KICAgICAvLyBPdGhlcndpc2UsIG51bGwgb3V0
IG91ciBmb3JtIGFuZCByZW1vdmUgb3Vyc2VsdmVzIGZyb20gdGhlIGZvcm0ncyBsaXN0IG9mIGVs
ZW1lbnRzLgpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpy
ZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIEhUTUxGb3JtRWxlbWVu
dCogRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpmaW5kQXNzb2NpYXRlZEZvcm0oY29uc3QgSFRNTEVs
ZW1lbnQqIGVsZW1lbnQsIEhUTUxGb3JtRWxlbWVudCogY3VycmVudEFzc29jaWF0ZWRGb3JtKQog
ewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUlkKGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oZm9ybUF0dHIpKTsKLSAgICBpZiAoIWZvcm1JZC5pc051bGwoKSAm
JiBlbGVtZW50LT5pbkRvY3VtZW50KCkpIHsKKyAgICBpZiAoIWZvcm1JZC5pc051bGwoKSAmJiBl
bGVtZW50LT5pc0Nvbm5lY3RlZCgpKSB7CiAgICAgICAgIC8vIFRoZSBIVE1MNSBzcGVjIHNheXMg
dGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgYXNzb2NpYXRlZCB3aXRoCiAgICAgICAgIC8vIHRo
ZSBmaXJzdCBlbGVtZW50IGluIHRoZSBkb2N1bWVudCB0byBoYXZlIGFuIElEIHRoYXQgZXF1YWwg
dG8KICAgICAgICAgLy8gdGhlIHZhbHVlIG9mIGZvcm0gYXR0cmlidXRlLCBzbyB3ZSBwdXQgdGhl
IHJlc3VsdCBvZgpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50
OjpyZXNldEZvcm1Pd25lcigpCiAgICAgSFRNTEZvcm1FbGVtZW50KiBvcmlnaW5hbEZvcm0gPSBt
X2Zvcm07CiAgICAgc2V0Rm9ybShmaW5kQXNzb2NpYXRlZEZvcm0oJmFzSFRNTEVsZW1lbnQoKSwg
bV9mb3JtKSk7CiAgICAgSFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBhc0hUTUxFbGVtZW50KCk7Ci0g
ICAgaWYgKG1fZm9ybSAmJiBtX2Zvcm0gIT0gb3JpZ2luYWxGb3JtICYmIG1fZm9ybS0+aW5Eb2N1
bWVudCgpKQorICAgIGlmIChtX2Zvcm0gJiYgbV9mb3JtICE9IG9yaWdpbmFsRm9ybSAmJiBtX2Zv
cm0tPmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5kaWRBc3NvY2lh
dGVGb3JtQ29udHJvbCgmZWxlbWVudCk7CiB9CiAKQEAgLTE4MiwxMiArMTgyLDEyIEBAIHZvaWQg
Rm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRlQ2hhbmdlZCgpCiAgICAgICAgIC8v
IFRoZSBmb3JtIGF0dHJpYnV0ZSByZW1vdmVkLiBXZSBuZWVkIHRvIHJlc2V0IGZvcm0gb3duZXIg
aGVyZS4KICAgICAgICAgSFRNTEZvcm1FbGVtZW50KiBvcmlnaW5hbEZvcm0gPSBtX2Zvcm07CiAg
ICAgICAgIHNldEZvcm0oSFRNTEZvcm1FbGVtZW50OjpmaW5kQ2xvc2VzdEZvcm1BbmNlc3Rvcihl
bGVtZW50KSk7Ci0gICAgICAgIGlmIChtX2Zvcm0gJiYgbV9mb3JtICE9IG9yaWdpbmFsRm9ybSAm
JiBtX2Zvcm0tPmluRG9jdW1lbnQoKSkKKyAgICAgICAgaWYgKG1fZm9ybSAmJiBtX2Zvcm0gIT0g
b3JpZ2luYWxGb3JtICYmIG1fZm9ybS0+aXNDb25uZWN0ZWQoKSkKICAgICAgICAgICAgIGVsZW1l
bnQuZG9jdW1lbnQoKS5kaWRBc3NvY2lhdGVGb3JtQ29udHJvbCgmZWxlbWVudCk7CiAgICAgICAg
IG1fZm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gbnVsbHB0cjsKICAgICB9IGVsc2Ugewog
ICAgICAgICByZXNldEZvcm1Pd25lcigpOwotICAgICAgICBpZiAoZWxlbWVudC5pbkRvY3VtZW50
KCkpCisgICAgICAgIGlmIChlbGVtZW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgICAgICByZXNl
dEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJhc2VFbGVtZW50LmNwcAppbmRleCA2MTRhMGNlZGFjYzA3YjM4M2Q0ZDIxYmE1NjM4
NTUwN2I4N2FhZjE0Li5mY2ZkNjdiNGQ5YzY1YzM2NWNiOTJjODE0NzY0ZGVlYWM1NTZhNGM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCkBAIC01NCw3ICs1NCw3IEBA
IHZvaWQgSFRNTEJhc2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1
ZXN0IEhUTUxCYXNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIGluc2VydGlv
blBvaW50KQogewogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQp
OwotICAgIGlmIChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkpCisgICAgaWYgKGluc2VydGlv
blBvaW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIGRvY3VtZW50KCkucHJvY2Vzc0Jhc2VFbGVt
ZW50KCk7CiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CkBAIC02Miw3ICs2Miw3IEBAIE5v
ZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTEJhc2VFbGVtZW50OjppbnNlcnRl
ZEludG8oQ29udGFpbmVyTm9kZSYKIHZvaWQgSFRNTEJhc2VFbGVtZW50OjpyZW1vdmVkRnJvbShD
b250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBIVE1MRWxlbWVudDo6cmVtb3Zl
ZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwotICAgIGlmIChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50
KCkpCisgICAgaWYgKGluc2VydGlvblBvaW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIGRvY3Vt
ZW50KCkucHJvY2Vzc0Jhc2VFbGVtZW50KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJv
ZHlFbGVtZW50LmNwcAppbmRleCBkMTVlMTY1ZjM3NWRjNTgxMDBkMDFmZDM4MjY2ZTc0ODgwYjgx
YTYxLi5mYjg4NDFmMzhiOGI0ODBlNWMyYzQ0OGZlMmRkZDcwMmY2ZjIwYjE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBI
VE1MQm9keUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmkKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRN
TEJvZHlFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQp
CiB7CiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50byhpbnNlcnRpb25Qb2ludCk7Ci0gICAg
aWYgKCFpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkpCisgICAgaWYgKCFpbnNlcnRpb25Qb2lu
dC5pc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIAogICAgIC8v
IEZJWE1FOiBJdCdzIHN1cnByaXNpbmcgdGhpcyBpcyB3ZWIgY29tcGF0aWJsZSBzaW5jZSBpdCBt
ZWFucyBhIG1hcmdpbndpZHRoIGFuZCBtYXJnaW5oZWlnaHQgYXR0cmlidXRlIGNhbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCmluZGV4IDQ4MDEyNmI2NTE2YjdlNzk1MzhiNjI5ZmI4
NmFlYzAyYzkxNzJmMjQuLjY0M2EyZTcwMmM1OTEzZjFlZTM2ZDlhMDk0NzIwNjM5NjViMDAyNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBw
cm90ZWN0ZWQ6CiAKIGlubGluZSBDb250YWluZXJOb2RlJiBIVE1MQ29sbGVjdGlvbjo6cm9vdE5v
ZGUoKSBjb25zdAogewotICAgIGlmIChpc1Jvb3RlZEF0RG9jdW1lbnQoKSAmJiBvd25lck5vZGUo
KS5pbkRvY3VtZW50KCkpCisgICAgaWYgKGlzUm9vdGVkQXREb2N1bWVudCgpICYmIG93bmVyTm9k
ZSgpLmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybiBvd25lck5vZGUoKS5kb2N1bWVudCgp
OwogCiAgICAgcmV0dXJuIG93bmVyTm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cAppbmRleCBmODFlZjZhMGEyYWRkZjIwZjVjMjY1ZmI3ZWRhMjliMmFiZmUzNDg2Li4yNjU0ZmJi
ZDk1NGIxOGZmNzI2Mzk2YjVjYjkyYTE3MjYzYjJkNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcApAQCAtNTE0LDcgKzUxNCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxFbGVt
ZW50OjpzZXRJbm5lclRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIC8vIEZJWE1FOiBDYW4g
dGhlIHJlbmRlcmVyIGJlIG91dCBvZiBkYXRlIGhlcmU/IERvIHdlIG5lZWQgdG8gY2FsbCB1cGRh
dGVTdHlsZUlmTmVlZGVkPwogICAgIC8vIEZvciBleGFtcGxlLCBmb3IgdGhlIGNvbnRlbnRzIG9m
IHRleHRhcmVhIGVsZW1lbnRzIHRoYXQgYXJlIGRpc3BsYXk6bm9uZT8KICAgICBhdXRvKiByID0g
cmVuZGVyZXIoKTsKLSAgICBpZiAoKHIgJiYgci0+c3R5bGUoKS5wcmVzZXJ2ZU5ld2xpbmUoKSkg
fHwgKGluRG9jdW1lbnQoKSAmJiBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCgpKSkgewor
ICAgIGlmICgociAmJiByLT5zdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpKSB8fCAoaXNDb25uZWN0
ZWQoKSAmJiBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCgpKSkgewogICAgICAgICBpZiAo
IXRleHQuY29udGFpbnMoJ1xyJykpIHsKICAgICAgICAgICAgIHJlcGxhY2VBbGxDaGlsZHJlbihk
b2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKHRleHQpKTsKICAgICAgICAgICAgIHJldHVybiB7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRl
eCA2MmMyODYxN2FlMzVkZTY3MzJmZmEwNjYzMzhmZTMxODE2NTQ2Y2E4Li5hOWMxNDRkYWRjYjJl
Mjc0OTBiMDdmNmEyNjkxMDQzNDQ4MGQ5YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMgYm9v
bCBzaG91bGRBdXRvZm9jdXMoSFRNTEZvcm1Db250cm9sRWxlbWVudCogZWxlbWVudCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihhdXRvZm9jdXNBdHRyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICghZWxlbWVudC0+aW5Eb2N1bWVudCgpIHx8ICFlbGVtZW50LT5kb2N1bWVudCgpLnJlbmRl
clZpZXcoKSkKKyAgICBpZiAoIWVsZW1lbnQtPmlzQ29ubmVjdGVkKCkgfHwgIWVsZW1lbnQtPmRv
Y3VtZW50KCkucmVuZGVyVmlldygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGVs
ZW1lbnQtPmRvY3VtZW50KCkuaXNTYW5kYm94ZWQoU2FuZGJveEF1dG9tYXRpY0ZlYXR1cmVzKSkg
ewogICAgICAgICAvLyBGSVhNRTogVGhpcyBtZXNzYWdlIHNob3VsZCBiZSBtb3ZlZCBvZmYgdGhl
IGNvbnNvbGUgb25jZSBhIHNvbHV0aW9uIHRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDMyNzQgZXhpc3RzLgpAQCAtNDgzLDcgKzQ4Myw3IEBAIGJvb2wgSFRNTEZv
cm1Db250cm9sRWxlbWVudDo6Y2hlY2tWYWxpZGl0eShWZWN0b3I8UmVmUHRyPEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ+CiAgICAgUmVmPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogICAgIFJlZjxEb2N1bWVudD4gb3JpZ2luYWxEb2N1bWVudChkb2N1bWVudCgp
KTsKICAgICBib29sIG5lZWRzRGVmYXVsdEFjdGlvbiA9IGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuaW52YWxpZEV2ZW50LCBmYWxzZSwgdHJ1ZSkpOwotICAgIGlmIChu
ZWVkc0RlZmF1bHRBY3Rpb24gJiYgdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzICYmIGluRG9jdW1l
bnQoKSAmJiBvcmlnaW5hbERvY3VtZW50LnB0cigpID09ICZkb2N1bWVudCgpKQorICAgIGlmIChu
ZWVkc0RlZmF1bHRBY3Rpb24gJiYgdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzICYmIGlzQ29ubmVj
dGVkKCkgJiYgb3JpZ2luYWxEb2N1bWVudC5wdHIoKSA9PSAmZG9jdW1lbnQoKSkKICAgICAgICAg
dW5oYW5kbGVkSW52YWxpZENvbnRyb2xzLT5hcHBlbmQodGhpcyk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQpAQCAtNTAxLDcgKzUwMSw3IEBAIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVw
b3J0VmFsaWRpdHkoKQogICAgIC8vIGhhcyAhcmVuZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSBhc3Nl
cnRpb24uCiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMoKTsKIAotICAgIGlmIChpbkRvY3VtZW50KCkgJiYgaXNGb2N1c2FibGUoKSkgeworICAgIGlm
IChpc0Nvbm5lY3RlZCgpICYmIGlzRm9jdXNhYmxlKCkpIHsKICAgICAgICAgZm9jdXNBbmRTaG93
VmFsaWRhdGlvbk1lc3NhZ2UoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3Rh
dGUuY3BwCmluZGV4IGUxYzQ3Y2YxMDNlNzVlZGNjNTJmMTE0ZmEzNjY3YWRjMTU1Y2Q3MDkuLjY3
NmIyN2NhNDA4NjU4MzU1M2M3YTA0Zjk5MGUzOWU1YTEwOTI5NzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmNwcApA
QCAtNDIsMTQgKzQyLDE0IEBAIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6On5IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKCkKIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjppbnNlcnRlZEludG8o
Q29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7Ci0gICAgaWYgKGluc2VydGlvblBvaW50
LmluRG9jdW1lbnQoKSAmJiAhY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKKyAgICBpZiAoaW5zZXJ0
aW9uUG9pbnQuaXNDb25uZWN0ZWQoKSAmJiAhY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKICAgICAg
ICAgZG9jdW1lbnQoKS5mb3JtQ29udHJvbGxlcigpLnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoU3Rh
dGUodGhpcyk7CiAgICAgcmV0dXJuIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6Omluc2VydGVkSW50
byhpbnNlcnRpb25Qb2ludCk7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhT
dGF0ZTo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7Ci0gICAg
aWYgKGluc2VydGlvblBvaW50LmluRG9jdW1lbnQoKSAmJiAhY29udGFpbmluZ1NoYWRvd1Jvb3Qo
KSAmJiAhaW5zZXJ0aW9uUG9pbnQuY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKKyAgICBpZiAoaW5z
ZXJ0aW9uUG9pbnQuaXNDb25uZWN0ZWQoKSAmJiAhY29udGFpbmluZ1NoYWRvd1Jvb3QoKSAmJiAh
aW5zZXJ0aW9uUG9pbnQuY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKICAgICAgICAgZG9jdW1lbnQo
KS5mb3JtQ29udHJvbGxlcigpLnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhTdGF0ZSh0aGlzKTsK
ICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7
CiB9CkBAIC02NCw3ICs2NCw3IEBAIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZTo6c2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3QKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZTo6c2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKCkgY29uc3QK
IHsKICAgICAvLyBXZSBkb24ndCBzYXZlL3Jlc3RvcmUgY29udHJvbCBzdGF0ZSBpbiBhIGZvcm0g
d2l0aCBhdXRvY29tcGxldGU9b2ZmLgotICAgIHJldHVybiBpbkRvY3VtZW50KCkgJiYgc2hvdWxk
QXV0b2NvbXBsZXRlKCk7CisgICAgcmV0dXJuIGlzQ29ubmVjdGVkKCkgJiYgc2hvdWxkQXV0b2Nv
bXBsZXRlKCk7CiB9CiAKIEZvcm1Db250cm9sU3RhdGUgSFRNTEZvcm1Db250cm9sRWxlbWVudFdp
dGhTdGF0ZTo6c2F2ZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDY0MGUzM2VmM2M4OTQyYWI4ZGQ5MTE4MzBmZTY4MGZj
ZWNiZWUwYmUuLmQ2MmZjZjQyYzk2M2ExZmMzNThhYjU4ZWRjZWJhNjU4MzJjNjhlMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBi
b29sIEhUTUxGb3JtRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUpCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxGb3JtRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQogewogICAgIEhU
TUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQpOwotICAgIGlmIChpbnNlcnRp
b25Qb2ludC5pbkRvY3VtZW50KCkpCisgICAgaWYgKGluc2VydGlvblBvaW50LmlzQ29ubmVjdGVk
KCkpCiAgICAgICAgIGRvY3VtZW50KCkuZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2wodGhpcyk7CiAg
ICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CkBAIC0yNDksNyArMjQ5LDcgQEAgYm9vbCBIVE1M
Rm9ybUVsZW1lbnQ6OnZhbGlkYXRlSW50ZXJhY3RpdmVseSgpCiAKICAgICAvLyBGb2N1cyBvbiB0
aGUgZmlyc3QgZm9jdXNhYmxlIGNvbnRyb2wgYW5kIHNob3cgYSB2YWxpZGF0aW9uIG1lc3NhZ2Uu
CiAgICAgZm9yIChhdXRvJiBjb250cm9sIDogdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzKSB7Ci0g
ICAgICAgIGlmIChjb250cm9sLT5pbkRvY3VtZW50KCkgJiYgY29udHJvbC0+aXNGb2N1c2FibGUo
KSkgeworICAgICAgICBpZiAoY29udHJvbC0+aXNDb25uZWN0ZWQoKSAmJiBjb250cm9sLT5pc0Zv
Y3VzYWJsZSgpKSB7CiAgICAgICAgICAgICBjb250cm9sLT5mb2N1c0FuZFNob3dWYWxpZGF0aW9u
TWVzc2FnZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI1OCw3ICsyNTgs
NyBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6dmFsaWRhdGVJbnRlcmFjdGl2ZWx5KCkKICAgICAv
LyBXYXJuIGFib3V0IGFsbCBvZiB1bmZvY3VzYWJsZSBjb250cm9scy4KICAgICBpZiAoZG9jdW1l
bnQoKS5mcmFtZSgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgY29udHJvbCA6IHVuaGFuZGxlZElu
dmFsaWRDb250cm9scykgewotICAgICAgICAgICAgaWYgKGNvbnRyb2wtPmluRG9jdW1lbnQoKSAm
JiBjb250cm9sLT5pc0ZvY3VzYWJsZSgpKQorICAgICAgICAgICAgaWYgKGNvbnRyb2wtPmlzQ29u
bmVjdGVkKCkgJiYgY29udHJvbC0+aXNGb2N1c2FibGUoKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiQW4gaW52YWxp
ZCBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lPSciLCBjb250cm9sLT5uYW1lKCksICInIGlzIG5vdCBm
b2N1c2FibGUuIik7CiAgICAgICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCmluZGV4IDFlOTAy
YTNlM2MwYmE3NmYzMDQ4MjA4YTAwMDA0ZDhkYjU2OGQ3ZTQuLjVkZDE0MmEyNTYwYmI4Yzc1YmUz
Zjg1NzhiZjllOGU5ZDIwOTllOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
RWxlbWVudEJhc2UuY3BwCkBAIC0xMzUsMTQgKzEzNSwxNCBAQCB2b2lkIEhUTUxGcmFtZUVsZW1l
bnRCYXNlOjpzZXROYW1lQW5kT3BlblVSTCgpCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25S
ZXF1ZXN0IEhUTUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYg
aW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50OjppbnNlcnRlZElu
dG8oaW5zZXJ0aW9uUG9pbnQpOwotICAgIGlmIChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkp
CisgICAgaWYgKGluc2VydGlvblBvaW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybiBJ
bnNlcnRpb25TaG91bGRDYWxsRmluaXNoZWRJbnNlcnRpbmdTdWJ0cmVlOwogICAgIHJldHVybiBJ
bnNlcnRpb25Eb25lOwogfQogCiB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpmaW5pc2hlZElu
c2VydGluZ1N1YnRyZWUoKQogewotICAgIGlmICghaW5Eb2N1bWVudCgpKQorICAgIGlmICghaXND
b25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRG9jdW1lbnRGcmFnbWVudHMg
ZG9uJ3Qga2ljayBvZiBhbnkgbG9hZHMuCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBIVE1MRnJh
bWVFbGVtZW50QmFzZTo6c2V0TG9jYXRpb24oY29uc3QgU3RyaW5nJiBzdHIpCiAKICAgICBtX1VS
TCA9IEF0b21pY1N0cmluZyhzdHIpOwogCi0gICAgaWYgKGluRG9jdW1lbnQoKSkKKyAgICBpZiAo
aXNDb25uZWN0ZWQoKSkKICAgICAgICAgb3BlblVSTChMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNr
Rm9yd2FyZExpc3Q6Ok5vKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVPd25lckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVP
d25lckVsZW1lbnQuY3BwCmluZGV4IDcxYjYyMjFiODllY2JjMzcyNjAwY2ZiMmRjZWQzNDZlODA1
YWZlYzIuLjM3NzllYzk2ZWNiNDI5MzY2ODM4MGM2MTdmYzFhNmQ2MTYzYmQ4YzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKQEAgLTU1LDcgKzU1
LDcgQEAgdm9pZCBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnNldENvbnRlbnRGcmFtZShGcmFtZSog
ZnJhbWUpCiAgICAgQVNTRVJUKCFtX2NvbnRlbnRGcmFtZSB8fCBtX2NvbnRlbnRGcmFtZS0+b3du
ZXJFbGVtZW50KCkgIT0gdGhpcyk7CiAgICAgQVNTRVJUKGZyYW1lKTsKICAgICAvLyBEaXNjb25u
ZWN0ZWQgZnJhbWVzIHNob3VsZCBub3QgYmUgYWxsb3dlZCB0byBsb2FkLgotICAgIEFTU0VSVChp
bkRvY3VtZW50KCkpOworICAgIEFTU0VSVChpc0Nvbm5lY3RlZCgpKTsKICAgICBtX2NvbnRlbnRG
cmFtZSA9IGZyYW1lOwogCiAgICAgZm9yIChDb250YWluZXJOb2RlKiBub2RlID0gdGhpczsgbm9k
ZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCmluZGV4IDQyYTVjMThhZmJiOWJhZmIwMWNj
NWFmODlkYjY5YzBjY2NmMTY0YTUuLjAxYzVkMWY4ZDI0MTc2MzZmZWViYjkzMTM4NzgyYmE2NzAz
YzhmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcApA
QCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6d2lsbFJlY2FsY1N0
eWxlKFN0eWxlOjpDaGFuZ2UpCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhU
TUxGcmFtZVNldEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRpb25Q
b2ludCkKIHsKICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsK
LSAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKGluc2VydGlv
blBvaW50LmlzQ29ubmVjdGVkKCkpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50KCkuZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNw
YXRjaERpZEJlY29tZUZyYW1lc2V0KGRvY3VtZW50KCkuaXNGcmFtZVNldCgpKTsKICAgICB9CkBA
IC0yMTksNyArMjE5LDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1M
RnJhbWVTZXRFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm8KIHZvaWQgSFRNTEZyYW1l
U2V0RWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7
CiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50KTsKLSAgICBpZiAo
aW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKGluc2VydGlvblBvaW50Lmlz
Q29ubmVjdGVkKCkpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJh
bWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZEJl
Y29tZUZyYW1lc2V0KGRvY3VtZW50KCkuaXNGcmFtZVNldCgpKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCBhNzIxM2Q3YTNmMzYxZThiNGY2YmI3
M2Q1M2EzZTQwOTcxMDJiZTYzLi5jOTEyY2ExYzc1MWRhZTlhMGQ0OTkwMTIyOTgwMjBiZjQyOGMx
NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTIwNCwx
MiArMjA0LDEyIEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAgICAgfSBlbHNlIGlmIChuYW1l
ID09IHNyY0F0dHIgfHwgbmFtZSA9PSBzcmNzZXRBdHRyIHx8IG5hbWUgPT0gc2l6ZXNBdHRyKQog
ICAgICAgICBzZWxlY3RJbWFnZVNvdXJjZSgpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gdXNlbWFw
QXR0cikgewotICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYmICFtX3BhcnNlZFVzZW1hcC5pc051
bGwoKSkKKyAgICAgICAgaWYgKGlzQ29ubmVjdGVkKCkgJiYgIW1fcGFyc2VkVXNlbWFwLmlzTnVs
bCgpKQogICAgICAgICAgICAgZG9jdW1lbnQoKS5yZW1vdmVJbWFnZUVsZW1lbnRCeVVzZW1hcCgq
bV9wYXJzZWRVc2VtYXAuaW1wbCgpLCAqdGhpcyk7CiAKICAgICAgICAgbV9wYXJzZWRVc2VtYXAg
PSBwYXJzZUhUTUxIYXNoTmFtZVJlZmVyZW5jZSh2YWx1ZSk7CiAKLSAgICAgICAgaWYgKGluRG9j
dW1lbnQoKSAmJiAhbV9wYXJzZWRVc2VtYXAuaXNOdWxsKCkpCisgICAgICAgIGlmIChpc0Nvbm5l
Y3RlZCgpICYmICFtX3BhcnNlZFVzZW1hcC5pc051bGwoKSkKICAgICAgICAgICAgIGRvY3VtZW50
KCkuYWRkSW1hZ2VFbGVtZW50QnlVc2VtYXAoKm1fcGFyc2VkVXNlbWFwLmltcGwoKSwgKnRoaXMp
OwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBjb21wb3NpdGVBdHRyKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBpbWFnZXMgZG9uJ3Qgc3VwcG9ydCBibGVuZCBtb2RlcyBpbiB0aGVpciBjb21wb3NpdGlu
ZyBhdHRyaWJ1dGUuCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHIK
ICAgICB9IGVsc2UgewogICAgICAgICBpZiAobmFtZSA9PSBuYW1lQXR0cikgewogICAgICAgICAg
ICAgYm9vbCB3aWxsSGF2ZU5hbWUgPSAhdmFsdWUuaXNOdWxsKCk7Ci0gICAgICAgICAgICBpZiAo
bV9oYWROYW1lQmVmb3JlQXR0cmlidXRlQ2hhbmdlZCAhPSB3aWxsSGF2ZU5hbWUgJiYgaW5Eb2N1
bWVudCgpICYmICFpc0luU2hhZG93VHJlZSgpICYmIGlzPEhUTUxEb2N1bWVudD4oZG9jdW1lbnQo
KSkpIHsKKyAgICAgICAgICAgIGlmIChtX2hhZE5hbWVCZWZvcmVBdHRyaWJ1dGVDaGFuZ2VkICE9
IHdpbGxIYXZlTmFtZSAmJiBpc0Nvbm5lY3RlZCgpICYmICFpc0luU2hhZG93VHJlZSgpICYmIGlz
PEhUTUxEb2N1bWVudD4oZG9jdW1lbnQoKSkpIHsKICAgICAgICAgICAgICAgICBIVE1MRG9jdW1l
bnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8SFRNTERvY3VtZW50Pih0aGlzLT5kb2N1bWVudCgpKTsK
ICAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gZ2V0SWRBdHRyaWJ1dGUo
KTsKICAgICAgICAgICAgICAgICBpZiAoIWlkLmlzRW1wdHkoKSAmJiBpZCAhPSBnZXROYW1lQXR0
cmlidXRlKCkpIHsKQEAgLTMxMyw3ICszMTMsNyBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IEhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJgog
ICAgIC8vIGluIGNhbGxiYWNrcyBiYWNrIHRvIHRoaXMgbm9kZS4KICAgICBOb2RlOjpJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydE5vdGlmaWNhdGlvblJlcXVlc3QgPSBIVE1MRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKIAotICAgIGlmIChpbnNlcnRpb25Q
b2ludC5pbkRvY3VtZW50KCkgJiYgIW1fcGFyc2VkVXNlbWFwLmlzTnVsbCgpKQorICAgIGlmIChp
bnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgpICYmICFtX3BhcnNlZFVzZW1hcC5pc051bGwoKSkK
ICAgICAgICAgZG9jdW1lbnQoKS5hZGRJbWFnZUVsZW1lbnRCeVVzZW1hcCgqbV9wYXJzZWRVc2Vt
YXAuaW1wbCgpLCAqdGhpcyk7CiAKICAgICBpZiAoaXM8SFRNTFBpY3R1cmVFbGVtZW50PihwYXJl
bnROb2RlKCkpKSB7CkBAIC0zMjMsNyArMzIzLDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBIVE1MSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYK
IAogICAgIC8vIElmIHdlIGhhdmUgYmVlbiBpbnNlcnRlZCBmcm9tIGEgcmVuZGVyZXItbGVzcyBk
b2N1bWVudCwKICAgICAvLyBvdXIgbG9hZGVyIG1heSBoYXZlIG5vdCBmZXRjaGVkIHRoZSBpbWFn
ZSwgc28gZG8gaXQgbm93LgotICAgIGlmIChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkgJiYg
IW1faW1hZ2VMb2FkZXIuaW1hZ2UoKSkKKyAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaXNDb25uZWN0
ZWQoKSAmJiAhbV9pbWFnZUxvYWRlci5pbWFnZSgpKQogICAgICAgICBtX2ltYWdlTG9hZGVyLnVw
ZGF0ZUZyb21FbGVtZW50KCk7CiAKICAgICByZXR1cm4gaW5zZXJ0Tm90aWZpY2F0aW9uUmVxdWVz
dDsKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnJlbW92ZWRGcm9t
KENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQogICAgIGlmIChtX2Zvcm0pCiAgICAgICAg
IG1fZm9ybS0+cmVtb3ZlSW1nRWxlbWVudCh0aGlzKTsKIAotICAgIGlmIChpbnNlcnRpb25Qb2lu
dC5pbkRvY3VtZW50KCkgJiYgIW1fcGFyc2VkVXNlbWFwLmlzTnVsbCgpKQorICAgIGlmIChpbnNl
cnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgpICYmICFtX3BhcnNlZFVzZW1hcC5pc051bGwoKSkKICAg
ICAgICAgZG9jdW1lbnQoKS5yZW1vdmVJbWFnZUVsZW1lbnRCeVVzZW1hcCgqbV9wYXJzZWRVc2Vt
YXAuaW1wbCgpLCAqdGhpcyk7CiAgICAgCiAgICAgaWYgKGlzPEhUTUxQaWN0dXJlRWxlbWVudD4o
cGFyZW50Tm9kZSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmNwcAppbmRl
eCA0YmFmZDQ4NGRjYTM3NWZkNTZhN2ZlZjdmYjJhZjczMmQ0ZjJmYTZjLi41ZTNlN2I5M2MyYWY4
YmIzNWJlYjYyYjYwYmZlNmE2MWIzN2JlOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VMb2FkZXIuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgSFRNTEltYWdlTG9hZGVyOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpCiAKICAgICBib29sIGxvYWRFcnJvciA9IGNhY2hl
ZEltYWdlLmVycm9yT2NjdXJyZWQoKSB8fCBjYWNoZWRJbWFnZS5yZXNwb25zZSgpLmh0dHBTdGF0
dXNDb2RlKCkgPj0gNDAwOwogICAgIGlmICghbG9hZEVycm9yKSB7Ci0gICAgICAgIGlmICghZWxl
bWVudCgpLmluRG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoIWVsZW1lbnQoKS5pc0Nvbm5lY3Rl
ZCgpKSB7CiAgICAgICAgICAgICBKU0M6OlZNJiB2bSA9IGNvbW1vblZNKCk7CiAgICAgICAgICAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBZG9w
dCByZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQsIGFuZCBzd2l0Y2ggdG8gcmVwb3J0RXh0cmFNZW1v
cnlBbGxvY2F0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRl
eCBiOTgyNDkyN2NiNTQwZTQyZmM4YmE5OGEyY2E0ZGYyZWZiMWMyYTQ0Li40MmE1MjM0ODBmNjNi
MDk1NmMyYjk2NWUzZTZiMGQ0ZmNlMjVjMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTkyMyw3ICs5MjMsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OnNldENoZWNrZWQoYm9vbCBub3dDaGVja2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50
QgogICAgIC8vIHVuY2hlY2tlZCB0byBtYXRjaCBvdGhlciBicm93c2Vycy4gRE9NIGlzIG5vdCBh
IHVzZWZ1bCBzdGFuZGFyZCBmb3IgdGhpcwogICAgIC8vIGJlY2F1c2UgaXQgc2F5cyBvbmx5IHRv
IGZpcmUgY2hhbmdlIGV2ZW50cyBhdCAibG9zZSBmb2N1cyIgdGltZSwgd2hpY2ggaXMKICAgICAv
LyBkZWZpbml0ZWx5IHdyb25nIGluIHByYWN0aWNlIGZvciB0aGVzZSB0eXBlcyBvZiBlbGVtZW50
cy4KLSAgICBpZiAoZXZlbnRCZWhhdmlvciAhPSBEaXNwYXRjaE5vRXZlbnQgJiYgaW5Eb2N1bWVu
dCgpICYmIG1faW5wdXRUeXBlLT5zaG91bGRTZW5kQ2hhbmdlRXZlbnRBZnRlckNoZWNrZWRDaGFu
Z2VkKCkpIHsKKyAgICBpZiAoZXZlbnRCZWhhdmlvciAhPSBEaXNwYXRjaE5vRXZlbnQgJiYgaXND
b25uZWN0ZWQoKSAmJiBtX2lucHV0VHlwZS0+c2hvdWxkU2VuZENoYW5nZUV2ZW50QWZ0ZXJDaGVj
a2VkQ2hhbmdlZCgpKSB7CiAgICAgICAgIHNldFRleHRBc09mTGFzdEZvcm1Db250cm9sQ2hhbmdl
RXZlbnQoU3RyaW5nKCkpOwogICAgICAgICBkaXNwYXRjaEZvcm1Db250cm9sQ2hhbmdlRXZlbnQo
KTsKICAgICB9CkBAIC0xNTA5LDE2ICsxNTA5LDE2IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNh
dGlvblJlcXVlc3QgSFRNTElucHV0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUm
CiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmZpbmlzaGVkSW5zZXJ0aW5nU3VidHJlZSgpCiB7CiAg
ICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmZpbmlzaGVkSW5zZXJ0aW5nU3VidHJlZSgp
OwotICAgIGlmIChpbkRvY3VtZW50KCkgJiYgIWZvcm0oKSkKKyAgICBpZiAoaXNDb25uZWN0ZWQo
KSAmJiAhZm9ybSgpKQogICAgICAgICBhZGRUb1JhZGlvQnV0dG9uR3JvdXAoKTsKIH0KIAogdm9p
ZCBIVE1MSW5wdXRFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNlcnRpb25Q
b2ludCkKIHsKLSAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpICYmICFmb3JtKCkp
CisgICAgaWYgKGluc2VydGlvblBvaW50LmlzQ29ubmVjdGVkKCkgJiYgIWZvcm0oKSkKICAgICAg
ICAgcmVtb3ZlRnJvbVJhZGlvQnV0dG9uR3JvdXAoKTsKICAgICBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwotICAgIEFTU0VSVCghaW5Eb2N1
bWVudCgpKTsKKyAgICBBU1NFUlQoIWlzQ29ubmVjdGVkKCkpOwogI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQogICAgIHJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCk7CiAjZW5k
aWYKQEAgLTE2MDQsNyArMTYwNCw3IEBAIEhUTUxEYXRhTGlzdEVsZW1lbnQqIEhUTUxJbnB1dEVs
ZW1lbnQ6OmRhdGFMaXN0KCkgY29uc3QKIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZXNldExp
c3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpCiB7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSkKKyAg
ICBpZiAoaXNDb25uZWN0ZWQoKSkKICAgICAgICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihsaXN0QXR0ciksIHRoaXMpOwogICAgIGVsc2UKICAg
ICAgICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBudWxscHRyOwpAQCAtMTg3MCw3
ICsxODcwLDcgQEAgUmFkaW9CdXR0b25Hcm91cHMqIEhUTUxJbnB1dEVsZW1lbnQ6OnJhZGlvQnV0
dG9uR3JvdXBzKCkgY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGF1dG8q
IGZvcm1FbGVtZW50ID0gZm9ybSgpKQogICAgICAgICByZXR1cm4gJmZvcm1FbGVtZW50LT5yYWRp
b0J1dHRvbkdyb3VwcygpOwotICAgIGlmIChpbkRvY3VtZW50KCkpCisgICAgaWYgKGlzQ29ubmVj
dGVkKCkpCiAgICAgICAgIHJldHVybiAmZG9jdW1lbnQoKS5mb3JtQ29udHJvbGxlcigpLnJhZGlv
QnV0dG9uR3JvdXBzKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGFiZWxFbGVtZW50LmNwcAppbmRleCAwMTBmZmM0YzM0YjgwOTVjYTk5NDUzMDAzYWUw
ZmI2Y2U4N2JmMWZkLi44ZjVhYzBjMTY0Y2I1NjRhNDMzODMyZDUxZjVkMmUxYjZjYjFkNTc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKQEAgLTcxLDcgKzcxLDcg
QEAgTGFiZWxhYmxlRWxlbWVudCogSFRNTExhYmVsRWxlbWVudDo6Y29udHJvbCgpIGNvbnN0CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBpbkRv
Y3VtZW50KCkgPyBmaXJzdEVsZW1lbnRXaXRoSWRJZkxhYmVsYWJsZSh0cmVlU2NvcGUoKSwgY29u
dHJvbElkKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGlzQ29ubmVjdGVkKCkgPyBmaXJzdEVsZW1l
bnRXaXRoSWRJZkxhYmVsYWJsZSh0cmVlU2NvcGUoKSwgY29udHJvbElkKSA6IG51bGxwdHI7CiB9
CiAKIEhUTUxGb3JtRWxlbWVudCogSFRNTExhYmVsRWxlbWVudDo6Zm9ybSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggNTJhZjFmZjI5Y2RlZDczNmVm
YWY1NTU1ODJhMTAzMzBkMGVkYjY3MC4uZjIzODYyZTFlNmE0OTEwN2M1ZDAxOThhYjkyZmExZmIz
ZGM1NTU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtMTEz
LDggKzExMyw4IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXREaXNhYmxlZFN0YXRlKGJvb2wg
ZGlzYWJsZWQpCiAgICAgaWYgKG9sZERpc2FibGVkU3RhdGUgPT0gbV9kaXNhYmxlZFN0YXRlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoaW5Eb2N1bWVudCgpIHx8ICFzdHlsZVNoZWV0
SXNMb2FkaW5nKCkpOwotICAgIGlmICghaW5Eb2N1bWVudCgpKQorICAgIEFTU0VSVChpc0Nvbm5l
Y3RlZCgpIHx8ICFzdHlsZVNoZWV0SXNMb2FkaW5nKCkpOworICAgIGlmICghaXNDb25uZWN0ZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSWYgd2UgY2hhbmdlIHRoZSBkaXNhYmxlZCBz
dGF0ZSB3aGlsZSB0aGUgc2hlZXQgaXMgc3RpbGwgbG9hZGluZywgdGhlbiB3ZSBoYXZlIHRvCkBA
IC0yMDIsNyArMjAyLDcgQEAgYm9vbCBIVE1MTGlua0VsZW1lbnQ6OnNob3VsZExvYWRMaW5rKCkK
ICAgICBpZiAoIWRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGdldE5vbkVtcHR5VVJMQXR0cmlidXRl
KGhyZWZBdHRyKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBBIGJlZm9yZWxvYWQg
aGFuZGxlciBtaWdodCBoYXZlIHJlbW92ZWQgdXMgZnJvbSB0aGUgZG9jdW1lbnQgb3IgY2hhbmdl
ZCB0aGUgZG9jdW1lbnQuCi0gICAgaWYgKCFpbkRvY3VtZW50KCkgfHwgJmRvY3VtZW50KCkgIT0g
b3JpZ2luYWxEb2N1bWVudC5wdHIoKSkKKyAgICBpZiAoIWlzQ29ubmVjdGVkKCkgfHwgJmRvY3Vt
ZW50KCkgIT0gb3JpZ2luYWxEb2N1bWVudC5wdHIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjE5LDcgKzIxOSw3IEBAIFN0cmluZyBIVE1MTGlua0Vs
ZW1lbnQ6OmNyb3NzT3JpZ2luKCkgY29uc3QKIAogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnByb2Nl
c3MoKQogewotICAgIGlmICghaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKCFpc0Nvbm5lY3RlZCgp
KSB7CiAgICAgICAgIEFTU0VSVCghbV9zaGVldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0zMDIsOSArMzAyLDkgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmNsZWFyU2hlZXQoKQogCiBO
b2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxMaW5rRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQogewotICAgIGJvb2wgd2FzSW5E
b2N1bWVudCA9IGluRG9jdW1lbnQoKTsKKyAgICBib29sIHdhc0luRG9jdW1lbnQgPSBpc0Nvbm5l
Y3RlZCgpOwogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQpOwot
ICAgIGlmICghaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpIHx8IHdhc0luRG9jdW1lbnQpCisg
ICAgaWYgKCFpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgpIHx8IHdhc0luRG9jdW1lbnQpCiAg
ICAgICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogCiAgICAgbV9zdHlsZVNjb3BlID0gJlN0eWxl
OjpTY29wZTo6Zm9yTm9kZSgqdGhpcyk7CkBAIC0zMTcsNyArMzE3LDcgQEAgTm9kZTo6SW5zZXJ0
aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MTGlua0VsZW1lbnQ6Omluc2VydGVkSW50byhDb250
YWluZXJOb2RlJgogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5v
ZGUmIGluc2VydGlvblBvaW50KQogewogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbShpbnNl
cnRpb25Qb2ludCk7Ci0gICAgaWYgKCFpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkgfHwgaW5E
b2N1bWVudCgpKQorICAgIGlmICghaW5zZXJ0aW9uUG9pbnQuaXNDb25uZWN0ZWQoKSB8fCBpc0Nv
bm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9zaGVldCkKQEAgLTM1Myw3
ICszNTMsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6aW5pdGlhbGl6ZVN0eWxlU2hlZXQoUmVm
PFN0eWxlU2hlZXRDb250ZW50cz4mJiBzdHlsZVNoZWV0LAogCiB2b2lkIEhUTUxMaW5rRWxlbWVu
dDo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVS
TCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBjYWNo
ZWRTdHlsZVNoZWV0KQogewotICAgIGlmICghaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKCFpc0Nv
bm5lY3RlZCgpKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaGVldCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCmluZGV4IGIxOGI0ODQ4
NzkyYzdiMzViYzg3YTFmNGU2MDI3MDJhNGQzNGQzNzQuLjAxZTZlZGFkMDdiZGIzYmUxZDAxYjg5
ODJhNWNjMTk5YmQ4YjY2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1h
cEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3Bw
CkBAIC05NCwxMyArOTQsMTMgQEAgdm9pZCBIVE1MTWFwRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW4KICAgICAgICAgICAg
IGlmIChkb2N1bWVudCgpLmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIGlmIChpbkRvY3VtZW50KCkpCisgICAgICAgIGlmIChpc0Nv
bm5lY3RlZCgpKQogICAgICAgICAgICAgdHJlZVNjb3BlKCkucmVtb3ZlSW1hZ2VNYXAoKnRoaXMp
OwogICAgICAgICBTdHJpbmcgbWFwTmFtZSA9IHZhbHVlOwogICAgICAgICBpZiAobWFwTmFtZVsw
XSA9PSAnIycpCiAgICAgICAgICAgICBtYXBOYW1lID0gbWFwTmFtZS5zdWJzdHJpbmcoMSk7CiAg
ICAgICAgIG1fbmFtZSA9IG1hcE5hbWU7Ci0gICAgICAgIGlmIChpbkRvY3VtZW50KCkpCisgICAg
ICAgIGlmIChpc0Nvbm5lY3RlZCgpKQogICAgICAgICAgICAgdHJlZVNjb3BlKCkuYWRkSW1hZ2VN
YXAoKnRoaXMpOwogCiAgICAgICAgIHJldHVybjsKQEAgLTExNywxNCArMTE3LDE0IEBAIFJlZjxI
VE1MQ29sbGVjdGlvbj4gSFRNTE1hcEVsZW1lbnQ6OmFyZWFzKCkKIE5vZGU6Okluc2VydGlvbk5v
dGlmaWNhdGlvblJlcXVlc3QgSFRNTE1hcEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJO
b2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25S
ZXF1ZXN0IHJlcXVlc3QgPSBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50
KTsKLSAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpKQorICAgIGlmIChpbnNlcnRp
b25Qb2ludC5pc0Nvbm5lY3RlZCgpKQogICAgICAgICB0cmVlU2NvcGUoKS5hZGRJbWFnZU1hcCgq
dGhpcyk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKIHZvaWQgSFRNTE1hcEVsZW1lbnQ6OnJl
bW92ZWRGcm9tKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQogewotICAgIGlmIChpbnNl
cnRpb25Qb2ludC5pbkRvY3VtZW50KCkpCisgICAgaWYgKGluc2VydGlvblBvaW50LmlzQ29ubmVj
dGVkKCkpCiAgICAgICAgIHRyZWVTY29wZSgpLnJlbW92ZUltYWdlTWFwKCp0aGlzKTsKICAgICBI
VE1MRWxlbWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZGI4Mzk3NDk3ZGY3NDQ5OTRiYTFjNDdm
ZWJkYjQwMmIxODRmMTgzYi4uZDllYmIxMmMyZGJlMThlNzJiNzI5NjMzNjc1ODBjNGIyZDE2YTgz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC04MTcsNyAr
ODE3LDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MTWVkaWFFbGVt
ZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYKICAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50OjppbnNlcnRlZEludG8oJXApIiwgdGhpcyk7CiAKICAgICBIVE1MRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKLSAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaW5E
b2N1bWVudCgpKSB7CisgICAgaWYgKGluc2VydGlvblBvaW50LmlzQ29ubmVjdGVkKCkpIHsKICAg
ICAgICAgbV9pbkFjdGl2ZURvY3VtZW50ID0gdHJ1ZTsKIAogI2lmIFBMQVRGT1JNKElPUykKQEAg
LTg3Niw3ICs4NzYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRh
aW5lck5vZGUmIGluc2VydGlvblBvaW50KQogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1l
bnQ6OnJlbW92ZWRGcm9tKCVwKSIsIHRoaXMpOwogCiAgICAgbV9pbkFjdGl2ZURvY3VtZW50ID0g
ZmFsc2U7Ci0gICAgaWYgKGluc2VydGlvblBvaW50LmluRG9jdW1lbnQoKSkgeworICAgIGlmIChp
bnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgpKSB7CiAgICAgICAgIC8vIFBhdXNlIGFzeW5jaHJv
bm91c2x5IHRvIGxldCB0aGUgb3BlcmF0aW9uIHRoYXQgcmVtb3ZlZCB1cyBmaW5pc2gsIGluIGNh
c2Ugd2UgZ2V0IGluc2VydGVkIGJhY2sgaW50byBhIGRvY3VtZW50LgogICAgICAgICBtX3BhdXNl
QWZ0ZXJEZXRhY2hlZFRhc2tRdWV1ZS5lbnF1ZXVlVGFzayhzdGQ6OmJpbmQoJkhUTUxNZWRpYUVs
ZW1lbnQ6OnBhdXNlQWZ0ZXJEZXRhY2hlZFRhc2ssIHRoaXMpKTsKICAgICB9CkBAIC01ODQ3LDcg
KzU4NDcsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJvbHMoKQog
CiAgICAgZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpLmFwcGVuZENoaWxkKG1lZGlhQ29udHJv
bHMpOwogCi0gICAgaWYgKCFjb250cm9scygpIHx8ICFpbkRvY3VtZW50KCkpCisgICAgaWYgKCFj
b250cm9scygpIHx8ICFpc0Nvbm5lY3RlZCgpKQogICAgICAgICBtZWRpYUNvbnRyb2xzLT5oaWRl
KCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU4NzIsMTIgKzU4NzIsMTIgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojpjb25maWd1cmVNZWRpYUNvbnRyb2xzKCkKICNlbmRpZgogCiAjaWYgRU5B
QkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKLSAgICBpZiAoIXJlcXVpcmVDb250cm9scyB8fCAh
aW5Eb2N1bWVudCgpIHx8ICFpbkFjdGl2ZURvY3VtZW50KCkpCisgICAgaWYgKCFyZXF1aXJlQ29u
dHJvbHMgfHwgIWlzQ29ubmVjdGVkKCkgfHwgIWluQWN0aXZlRG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgZW5zdXJlTWVkaWFDb250cm9sc1NoYWRvd1Jvb3QoKTsKICNlbHNlCi0g
ICAgaWYgKCFyZXF1aXJlQ29udHJvbHMgfHwgIWluRG9jdW1lbnQoKSB8fCAhaW5BY3RpdmVEb2N1
bWVudCgpKSB7CisgICAgaWYgKCFyZXF1aXJlQ29udHJvbHMgfHwgIWlzQ29ubmVjdGVkKCkgfHwg
IWluQWN0aXZlRG9jdW1lbnQoKSkgewogICAgICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQog
ICAgICAgICAgICAgbWVkaWFDb250cm9scygpLT5oaWRlKCk7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAppbmRleCBjM2VkODIwNzI4MWMzYWRk
N2VkM2M1MDMzMWU3YTk0M2RhOWNiYTBhLi4xNWYwMDIxNzc5MTY4ZTJjNGIwZDA0Y2JlZTc5MDdj
NGE1OGM0OWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCkBAIC02
Myw3ICs2Myw3IEBAIHZvaWQgSFRNTE1ldGFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpCiBOb2RlOjpJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IEhUTUxNZXRhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5v
ZGUmIGluc2VydGlvblBvaW50KQogewogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5z
ZXJ0aW9uUG9pbnQpOwotICAgIGlmIChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkpCisgICAg
aWYgKGluc2VydGlvblBvaW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHByb2Nlc3MoKTsKICAg
ICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0KQEAgLTcxLDcgKzcxLDcgQEAgTm9kZTo6SW5zZXJ0
aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MTWV0YUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250
YWluZXJOb2RlJgogdm9pZCBIVE1MTWV0YUVsZW1lbnQ6OnByb2Nlc3MoKQogewogICAgIC8vIENo
YW5naW5nIGEgbWV0YSB0YWcgd2hpbGUgaXQncyBub3QgaW4gdGhlIHRyZWUgc2hvdWxkbid0IGhh
dmUgYW55IGVmZmVjdCBvbiB0aGUgZG9jdW1lbnQuCi0gICAgaWYgKCFpbkRvY3VtZW50KCkpCisg
ICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGNvbnRlbnRWYWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
Y29udGVudEF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApp
bmRleCBjYTkwOTcyMDRhYjM2MGIyMDQ3OTZkODhhMzQ3MWFlYjg4MGRkNWU0Li5lODYyMGE4OGI3
MzRkZDgyNjg4OGQ5ZjczODI1NWUxZmZhZjNjM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPYmplY3RFbGVtZW50LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgSFRNTE9iamVjdEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pY1N0CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIAotICAgIGlmICghaW52YWxpZGF0ZVJlbmRlcmVyIHx8
ICFpbkRvY3VtZW50KCkgfHwgIXJlbmRlcmVyKCkpCisgICAgaWYgKCFpbnZhbGlkYXRlUmVuZGVy
ZXIgfHwgIWlzQ29ubmVjdGVkKCkgfHwgIXJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGNsZWFyVXNlRmFsbGJhY2tDb250ZW50KCk7CkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBI
VE1MT2JqZWN0RWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9p
bnQpCiB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRD
aGFuZ2UmIGNoYW5nZSkKIHsKICAgICB1cGRhdGVEb2NOYW1lZEl0ZW0oKTsKLSAgICBpZiAoaW5E
b2N1bWVudCgpICYmICF1c2VGYWxsYmFja0NvbnRlbnQoKSkgeworICAgIGlmIChpc0Nvbm5lY3Rl
ZCgpICYmICF1c2VGYWxsYmFja0NvbnRlbnQoKSkgewogICAgICAgICBzZXROZWVkc1dpZGdldFVw
ZGF0ZSh0cnVlKTsKICAgICAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogICAgIH0K
QEAgLTM3MSw3ICszNzEsNyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJGYWxsYmFj
a0NvbnRlbnQoKQogICAgIGlmICh1c2VGYWxsYmFja0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIGlmICghaW5Eb2N1bWVudCgpKQorICAgIGlmICghaXNDb25uZWN0ZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaW52YWxpZGF0ZVN0eWxlQW5kUmVuZGVyZXJzRm9yU3Vi
dHJlZSgpOwpAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0
ZURvY05hbWVkSXRlbSgpCiAgICAgICAgICAgICBpc05hbWVkSXRlbSA9IGZhbHNlOwogICAgICAg
ICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOwogICAgIH0KLSAgICBpZiAoaXNOYW1lZEl0
ZW0gIT0gd2FzTmFtZWRJdGVtICYmIGluRG9jdW1lbnQoKSAmJiAhaXNJblNoYWRvd1RyZWUoKSAm
JiBpczxIVE1MRG9jdW1lbnQ+KGRvY3VtZW50KCkpKSB7CisgICAgaWYgKGlzTmFtZWRJdGVtICE9
IHdhc05hbWVkSXRlbSAmJiBpc0Nvbm5lY3RlZCgpICYmICFpc0luU2hhZG93VHJlZSgpICYmIGlz
PEhUTUxEb2N1bWVudD4oZG9jdW1lbnQoKSkpIHsKICAgICAgICAgSFRNTERvY3VtZW50JiBkb2N1
bWVudCA9IGRvd25jYXN0PEhUTUxEb2N1bWVudD4odGhpcy0+ZG9jdW1lbnQoKSk7CiAKICAgICAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZCA9IGdldElkQXR0cmlidXRlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBhOGNiOGU1NTM0
OWJjMTU4YTY0ZmE1ZThlNGE0MGYwNDBiNmQyN2I1Li4zZmRlZDVjY2U4NDA4YjViYTgyNzcwNWM2
N2JjYjA5NzhjNWFhYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiAgICAgLy8gSFRNTE9iamVjdEVsZW1lbnQg
bmVlZHMgdG8gZGVsYXkgd2lkZ2V0IHVwZGF0ZXMgdW50aWwgYWZ0ZXIgYWxsIGNoaWxkcmVuIGFy
ZSBwYXJzZWQsCiAgICAgLy8gRm9yIEhUTUxFbWJlZEVsZW1lbnQgdGhpcyBkZWxheSBpcyB1bm5l
Y2Vzc2FyeSwgYnV0IHRoZXJlIGlzIG5vIGhhcm0gaW4gZG9pbmcgdGhlIHNhbWUuCiAgICAgc2V0
TmVlZHNXaWRnZXRVcGRhdGUodHJ1ZSk7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSkKKyAgICBpZiAo
aXNDb25uZWN0ZWQoKSkKICAgICAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IGJjOGIwN2M5
YTgxNWQ5ZTQ3Y2QzYWMyOTY3ZGI4ZjcwZTJkMjhkYjAuLmVhMDllNTU5OGY2NjcxMTFlNTdhMzc0
OTkwMjRlYTU2MWJhNzJmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuY3BwCkBAIC03NTksMTEgKzc1OSwxMSBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRS
ZWNhbGNMaXN0SXRlbXMoKQogICAgIG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXggPSAtMTsK
ICAgICBzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoKTsKICAgICBpbnZhbGlkYXRlU3R5bGVG
b3JTdWJ0cmVlKCk7Ci0gICAgaWYgKCFpbkRvY3VtZW50KCkpIHsKKyAgICBpZiAoIWlzQ29ubmVj
dGVkKCkpIHsKICAgICAgICAgaWYgKEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uID0gY2FjaGVk
SFRNTENvbGxlY3Rpb24oU2VsZWN0T3B0aW9ucykpCiAgICAgICAgICAgICBjb2xsZWN0aW9uLT5p
bnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQoKSk7CiAgICAgfQotICAgIGlmICghaW5Eb2N1bWVudCgp
KQorICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAgICAgaW52YWxpZGF0ZVNlbGVjdGVkSXRl
bXMoKTsKICAgICBpZiAoYXV0byogY2FjaGUgPSBkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RD
YWNoZSgpKQogICAgICAgICBjYWNoZS0+Y2hpbGRyZW5DaGFuZ2VkKHRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKaW5kZXggNjUyMzRhYTJhNDhiZWIzZTBiYmJm
ZjZkZDJjN2VlYWY5NGYxNDM4Ni4uZjdlOWQ1ZThhODcxYmRmMTdkOWE4MDJlMjU2M2Q1M2RjMWYx
ZmUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCkBAIC05Nyw5
ICs5Nyw5IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkK
IAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MU3R5bGVFbGVtZW50Ojpp
bnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7Ci0gICAgYm9vbCB3
YXNJbkRvY3VtZW50ID0gaW5Eb2N1bWVudCgpOworICAgIGJvb2wgd2FzSW5Eb2N1bWVudCA9IGlz
Q29ubmVjdGVkKCk7CiAgICAgYXV0byByZXN1bHQgPSBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
KGluc2VydGlvblBvaW50KTsKLSAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpICYm
ICF3YXNJbkRvY3VtZW50KQorICAgIGlmIChpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgpICYm
ICF3YXNJbkRvY3VtZW50KQogICAgICAgICBtX3N0eWxlU2hlZXRPd25lci5pbnNlcnRlZEludG9E
b2N1bWVudCgqdGhpcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEwNyw3ICsxMDcsNyBA
QCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxTdHlsZUVsZW1lbnQ6Omlu
c2VydGVkSW50byhDb250YWluZXJOb2RlJgogdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpyZW1vdmVk
RnJvbShDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBIVE1MRWxlbWVudDo6
cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwotICAgIGlmIChpbnNlcnRpb25Qb2ludC5pbkRv
Y3VtZW50KCkgJiYgIWluRG9jdW1lbnQoKSkKKyAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaXNDb25u
ZWN0ZWQoKSAmJiAhaXNDb25uZWN0ZWQoKSkKICAgICAgICAgbV9zdHlsZVNoZWV0T3duZXIucmVt
b3ZlZEZyb21Eb2N1bWVudCgqdGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggYTlhNTM3NGNjNmE0YjEyYTcw
ZjJiOTg0NjNiOWY5Zjg4YzY5ODk0MC4uZThjZDQ4MzY4NmUxYTIzMGI1M2EyNThkYzQwMjJjM2Y5
MTlhYzRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJiBjaGlsZCkgY28K
IE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKICAg
ICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVl
c3QgPSBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjppbnNlcnRlZEludG8oaW5zZXJ0
aW9uUG9pbnQpOwotICAgIGlmICghaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpKQorICAgIGlm
ICghaW5zZXJ0aW9uUG9pbnQuaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuIGluc2VydGlv
bk5vdGlmaWNhdGlvblJlcXVlc3Q7CiAgICAgU3RyaW5nIGluaXRpYWxWYWx1ZSA9IHZhbHVlKCk7
CiAgICAgc2V0VGV4dEFzT2ZMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudChpbml0aWFsVmFsdWUu
aXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogaW5pdGlhbFZhbHVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCmluZGV4IDFkZTRkN2UwNmU5YzIxZWFkYjVmMmQ0Zjk1
NzBhNWYzYmFjZmMzYzYuLjgxYmE4ZGVlZmQ5ZjdlZGQxZWYxODdkMjA3MDI2ZDIyYzVjMDA5YmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcApAQCAtNTMsNyArNTMs
NyBAQCBSZWY8SFRNTFRpdGxlRWxlbWVudD4gSFRNTFRpdGxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9u
UmVxdWVzdCBIVE1MVGl0bGVFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYgaW5z
ZXJ0aW9uUG9pbnQpCiB7CiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50byhpbnNlcnRpb25Q
b2ludCk7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSAmJiAhaXNJblNoYWRvd1RyZWUoKSkKKyAgICBp
ZiAoaXNDb25uZWN0ZWQoKSAmJiAhaXNJblNoYWRvd1RyZWUoKSkKICAgICAgICAgZG9jdW1lbnQo
KS50aXRsZUVsZW1lbnRBZGRlZCgqdGhpcyk7CiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9
CkBAIC02MSw3ICs2MSw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRN
TFRpdGxlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmCiB2b2lkIEhUTUxUaXRs
ZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQogewog
ICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7Ci0gICAgaWYgKGlu
c2VydGlvblBvaW50LmluRG9jdW1lbnQoKSAmJiAhaW5zZXJ0aW9uUG9pbnQuaXNJblNoYWRvd1Ry
ZWUoKSkKKyAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaXNDb25uZWN0ZWQoKSAmJiAhaW5zZXJ0aW9u
UG9pbnQuaXNJblNoYWRvd1RyZWUoKSkKICAgICAgICAgZG9jdW1lbnQoKS50aXRsZUVsZW1lbnRS
ZW1vdmVkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5
bGUuY3BwCmluZGV4IDlkYzhmMDQ4ZDc2ZjhjOTJiYmEyZTE5OTZkYThkN2FkOGEyZWIzNmMuLjA1
MmZhMzE2NDZlOGUyZGEzMGQzNzczN2UxNDk0ZTZjMTUyMDA3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIENv
bG9yIHBhcnNlQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZywgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gbnVsbHB0cikKIAogQ29sb3IgY3VycmVudENvbG9yKEhUTUxDYW52YXNFbGVtZW50KiBj
YW52YXMpCiB7Ci0gICAgaWYgKCFjYW52YXMgfHwgIWNhbnZhcy0+aW5Eb2N1bWVudCgpIHx8ICFj
YW52YXMtPmlubGluZVN0eWxlKCkpCisgICAgaWYgKCFjYW52YXMgfHwgIWNhbnZhcy0+aXNDb25u
ZWN0ZWQoKSB8fCAhY2FudmFzLT5pbmxpbmVTdHlsZSgpKQogICAgICAgICByZXR1cm4gQ29sb3I6
OmJsYWNrOwogICAgIENvbG9yIGNvbG9yID0gQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKGNhbnZhcy0+
aW5saW5lU3R5bGUoKS0+Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKSk7CiAgICAg
aWYgKCFjb2xvci5pc1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKaW5k
ZXggZDU4NmUyOWRjNTU4ODY5NjhlZDQwOTVlOGE4ZTgwN2M3ZDFiMjMxYi4uZDU2NTM4MmZjZjM3
ZTBmOGJhMDM0ODk2YjU4MWVjOTBmMTRlMTFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01TZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0
aW9uLmNwcApAQCAtMzkyLDcgKzM5Miw3IEBAIGJvb2wgRE9NU2VsZWN0aW9uOjpjb250YWluc05v
ZGUoTm9kZSYgbm9kZSwgYm9vbCBhbGxvd1BhcnRpYWwpIGNvbnN0CiAgICAgYXV0byBzZWxlY3Rl
ZFJhbmdlID0gc2VsZWN0aW9uLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAKICAg
ICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlID0gbm9kZS5wYXJlbnROb2RlKCk7Ci0gICAgaWYg
KCFwYXJlbnROb2RlIHx8ICFwYXJlbnROb2RlLT5pbkRvY3VtZW50KCkpCisgICAgaWYgKCFwYXJl
bnROb2RlIHx8ICFwYXJlbnROb2RlLT5pc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgdW5zaWduZWQgbm9kZUluZGV4ID0gbm9kZS5jb21wdXRlTm9kZUluZGV4KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAyY2Y0ODY3ODIxZWU5ZmU4NGY2
NmZjMzhhNjQ5Y2MwY2FkZjM1YzZiLi4wM2Q0ODNiNTQxYzAxOTdkMzhlOTQzNTM4MmEzNzc1ZjYz
ZmZmYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zNDAwLDcgKzM0
MDAsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCwgRHJhZ09wZXJhdAogdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0
ZURyYWdTdGF0ZUFmdGVyRWRpdERyYWdJZk5lZWRlZChFbGVtZW50JiByb290RWRpdGFibGVFbGVt
ZW50KQogewogICAgIC8vIElmIGluc2VydGluZyB0aGUgZHJhZ2dlZCBjb250ZW50cyByZW1vdmVk
IHRoZSBkcmFnIHNvdXJjZSwgd2Ugc3RpbGwgd2FudCB0byBmaXJlIGRyYWdlbmQgYXQgdGhlIHJv
b3QgZWRpdGFibGUgZWxlbWVudC4KLSAgICBpZiAoZHJhZ1N0YXRlKCkuc291cmNlICYmICFkcmFn
U3RhdGUoKS5zb3VyY2UtPmluRG9jdW1lbnQoKSkKKyAgICBpZiAoZHJhZ1N0YXRlKCkuc291cmNl
ICYmICFkcmFnU3RhdGUoKS5zb3VyY2UtPmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIGRyYWdTdGF0
ZSgpLnNvdXJjZSA9ICZyb290RWRpdGFibGVFbGVtZW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKaW5kZXggMzFjYzY1OWU0YjllMGNiOGVi
MTMzYTMyMTVjMDc3ZWIzNmM2NDY2OC4uMjZiM2NiZmM3M2U3YjY1NDdiZThjNGY5YzczMTdiYzU3
ODQ1NjQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVy
LmNwcApAQCAtNDgsNyArNDgsNyBAQCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OlBvaW50ZXJMb2Nr
Q29udHJvbGxlcihQYWdlJiBwYWdlKQogCiB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6cmVx
dWVzdFBvaW50ZXJMb2NrKEVsZW1lbnQqIHRhcmdldCkKIHsKLSAgICBpZiAoIXRhcmdldCB8fCAh
dGFyZ2V0LT5pbkRvY3VtZW50KCkgfHwgbV9kb2N1bWVudE9mUmVtb3ZlZEVsZW1lbnRXaGlsZVdh
aXRpbmdGb3JVbmxvY2spIHsKKyAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0LT5pc0Nvbm5lY3Rl
ZCgpIHx8IG1fZG9jdW1lbnRPZlJlbW92ZWRFbGVtZW50V2hpbGVXYWl0aW5nRm9yVW5sb2NrKSB7
CiAgICAgICAgIGVucXVldWVFdmVudChldmVudE5hbWVzKCkucG9pbnRlcmxvY2tlcnJvckV2ZW50
LCB0YXJnZXQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDc2NzlhNDg1NzViYjQ0ZGQwN2FhMjBkOThjMjNl
MzIxMmM4NzcxNmEuLmQyMjU4NWEwMzI1ZmFlYTYwZWRmZDJkN2YwMGY2ODhkODk0MjhjOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTc1NSwxMSAr
NzU1LDExIEBAIE5vZGUqIEhpdFRlc3RSZXN1bHQ6OnRhcmdldE5vZGUoKSBjb25zdAogICAgIE5v
ZGUqIG5vZGUgPSBpbm5lck5vZGUoKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiAw
OwotICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkpCisgICAgaWYgKG5vZGUtPmlzQ29ubmVjdGVk
KCkpCiAgICAgICAgIHJldHVybiBub2RlOwogCiAgICAgRWxlbWVudCogZWxlbWVudCA9IG5vZGUt
PnBhcmVudEVsZW1lbnQoKTsKLSAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pbkRvY3VtZW50
KCkpCisgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNDb25uZWN0ZWQoKSkKICAgICAgICAg
cmV0dXJuIGVsZW1lbnQ7CiAKICAgICByZXR1cm4gbm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCmluZGV4IDBi
YTliZDdmNjBlMWE0Y2VkOWM1NDRhY2QxZDA2OTk3M2IwZDA0NWYuLjJjMzM4NWQ1MDk1ZDQzNDAy
YmUxODI4ZTAyY2Q3ZTUxY2JmOGIxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcApAQCAtMzksNyArMzksNyBA
QCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUo
SFRNTFRleHRBcmVhRWxlbWVudCYgZWxlbQogCiBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6
flJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKCkKIHsKLSAgICBpZiAodGV4dEFyZWFFbGVtZW50
KCkuaW5Eb2N1bWVudCgpKQorICAgIGlmICh0ZXh0QXJlYUVsZW1lbnQoKS5pc0Nvbm5lY3RlZCgp
KQogICAgICAgICB0ZXh0QXJlYUVsZW1lbnQoKS5yZW5kZXJlcldpbGxCZURlc3Ryb3llZCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKaW5kZXggYmRj
YWVkZjg0ZTVjOGRjNDVkMGRmMmQ4ZTQ0MzY4ZGI3NzliMzBiMC4uNWViZTU4MzY3MDFmYzJmYzk0
YzIxNTA0ODZiNTk5MTZlZDk4YjhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5
L1JlcGxheUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlD
b250cm9sbGVyLmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgdm9pZCBsb2dEaXNwYXRjaGVk
RE9NRXZlbnQoY29uc3QgRXZlbnQmIGV2ZW50LCBib29sIGV2ZW50SXNVbnJlbGF0ZWQpCiAgICAg
ICAgIExPRyhXZWJSZXBsYXksICIlLTIwcyAtLS0+JXMgRE9NIGV2ZW50OiB0eXBlPSVzLCB0YXJn
ZXQ9JXUvbm9kZVslcF0gJXNcbiIsICJSZXBsYXlFdmVudHMiLAogICAgICAgICAgICAgKGV2ZW50
SXNVbnJlbGF0ZWQpID8gIlVucmVsYXRlZCIgOiAiRGlzcGF0Y2hpbmciLAogICAgICAgICAgICAg
ZXZlbnQudHlwZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCi0gICAgICAgICAgICBmcmFtZUlu
ZGV4RnJvbURvY3VtZW50KChub2RlLT5pbkRvY3VtZW50KCkpID8gJm5vZGUtPmRvY3VtZW50KCkg
OiBub2RlLT5vd25lckRvY3VtZW50KCkpLAorICAgICAgICAgICAgZnJhbWVJbmRleEZyb21Eb2N1
bWVudCgobm9kZS0+aXNDb25uZWN0ZWQoKSkgPyAmbm9kZS0+ZG9jdW1lbnQoKSA6IG5vZGUtPm93
bmVyRG9jdW1lbnQoKSksCiAgICAgICAgICAgICBub2RlLAogICAgICAgICAgICAgbm9kZS0+bm9k
ZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKICAgICB9IGVsc2UgaWYgKERPTVdpbmRvdyogd2luZG93
ID0gdGFyZ2V0LT50b0RPTVdpbmRvdygpKSB7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBSZXBs
YXlDb250cm9sbGVyOjp3aWxsRGlzcGF0Y2hFdmVudChjb25zdCBFdmVudCYgZXZlbnQsIEZyYW1l
KiBmcmFtZSkKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSA/IGZyYW1lLT5kb2N1bWVu
dCgpIDogbnVsbHB0cjsKICAgICAvLyBGZXRjaCB0aGUgZG9jdW1lbnQgZnJvbSB0aGUgZXZlbnQg
dGFyZ2V0LCBiZWNhdXNlIHRoZSB0YXJnZXQgY291bGQgYmUgZGV0YWNoZWQuCiAgICAgaWYgKE5v
ZGUqIG5vZGUgPSB0YXJnZXQtPnRvTm9kZSgpKQotICAgICAgICBkb2N1bWVudCA9IG5vZGUtPmlu
RG9jdW1lbnQoKSA/ICZub2RlLT5kb2N1bWVudCgpIDogbm9kZS0+b3duZXJEb2N1bWVudCgpOwor
ICAgICAgICBkb2N1bWVudCA9IG5vZGUtPmlzQ29ubmVjdGVkKCkgPyAmbm9kZS0+ZG9jdW1lbnQo
KSA6IG5vZGUtPm93bmVyRG9jdW1lbnQoKTsKICAgICBlbHNlIGlmIChET01XaW5kb3cqIHdpbmRv
dyA9IHRhcmdldC0+dG9ET01XaW5kb3coKSkKICAgICAgICAgZG9jdW1lbnQgPSB3aW5kb3ctPmRv
Y3VtZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKaW5kZXggMzI5MDQ4YjBi
Njc0OTE0MzEyNGJmYTYzZTY1NGZhNTkzMzdiOWJmZi4uOWU4YjcxZDRjNjczOTcwYTM5Y2E0ODYx
YmI3ZTc1MmIzYzQxN2UwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVT
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKQEAgLTEx
Nyw3ICsxMTcsNyBAQCB2b2lkIFNjb3BlOjpjbGVhclJlc29sdmVyKCkKIAogU2NvcGUmIFNjb3Bl
Ojpmb3JOb2RlKE5vZGUmIG5vZGUpCiB7Ci0gICAgQVNTRVJUKG5vZGUuaW5Eb2N1bWVudCgpKTsK
KyAgICBBU1NFUlQobm9kZS5pc0Nvbm5lY3RlZCgpKTsKICAgICBhdXRvKiBzaGFkb3dSb290ID0g
bm9kZS5jb250YWluaW5nU2hhZG93Um9vdCgpOwogICAgIGlmIChzaGFkb3dSb290KQogICAgICAg
ICByZXR1cm4gc2hhZG93Um9vdC0+c3R5bGVTY29wZSgpOwpAQCAtMTkyLDcgKzE5Miw3IEBAIHZv
aWQgU2NvcGU6OnJlbW92ZVBlbmRpbmdTaGVldChSZW1vdmVQZW5kaW5nU2hlZXROb3RpZmljYXRp
b25UeXBlIG5vdGlmaWNhdGlvbikKIAogdm9pZCBTY29wZTo6YWRkU3R5bGVTaGVldENhbmRpZGF0
ZU5vZGUoTm9kZSYgbm9kZSwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiB7Ci0gICAgaWYgKCFub2Rl
LmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIW5vZGUuaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAogICAgIC8vIFVudGlsIHRoZSA8Ym9keT4gZXhpc3RzLCB3ZSBoYXZlIG5vIGNo
b2ljZSBidXQgdG8gY29tcGFyZSBkb2N1bWVudCBwb3NpdGlvbnMsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggYzU5ZjUzZjJmMDQ2ODVlNjg2YTgzNDNh
MjIzY2FiYjJiOTY1YzE5Mi4uMDdjYTljMzk2OTIxZmE2YmNlMTUyZDQ5Zjk2YWNmNWEyNWQzZjc1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcApAQCAtMzc4
LDcgKzM3OCw3IEBAIHZvaWQgVHJlZVJlc29sdmVyOjpyZXNvbHZlQ29tcG9zZWRUcmVlKCkKICAg
ICAgICAgYXV0byYgbm9kZSA9ICppdDsKICAgICAgICAgYXV0byYgcGFyZW50ID0gdGhpcy0+cGFy
ZW50KCk7CiAKLSAgICAgICAgQVNTRVJUKG5vZGUuaW5Eb2N1bWVudCgpKTsKKyAgICAgICAgQVNT
RVJUKG5vZGUuaXNDb25uZWN0ZWQoKSk7CiAgICAgICAgIEFTU0VSVChub2RlLmNvbnRhaW5pbmdT
aGFkb3dSb290KCkgPT0gc2NvcGUoKS5zaGFkb3dSb290KTsKICAgICAgICAgQVNTRVJUKG5vZGUu
cGFyZW50RWxlbWVudCgpID09IHBhcmVudC5lbGVtZW50IHx8IGlzPFNoYWRvd1Jvb3Q+KG5vZGUu
cGFyZW50Tm9kZSgpKSB8fCBub2RlLnBhcmVudEVsZW1lbnQoKS0+c2hhZG93Um9vdCgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAppbmRleCBmYjdk
OWE2ZmNhOTJmZmM2ZWFmZTk1ZWYyM2JkNDQxN2MyZjc0M2QwLi4xMWFlN2E5ODEyYjlhNDJhN2Fk
Y2NiMjIzZjhiMjk0Yzk4MDFmZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZUVsZW1lbnRCYXNlLmNwcApAQCAtMjUxLDggKzI1MSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBy
ZW1vdmVDU1NQcm9wZXJ0eUZyb21UYXJnZXQoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCwgQ1NT
UHJvCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBseUNTU1Byb3BlcnR5VG9UYXJnZXRBbmRJbnN0
YW5jZXMoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nKQogewotICAgIC8vIEZJWE1F
OiBEbyB3ZSByZWFsbHkgbmVlZCB0byBjaGVjayBib3RoIGluRG9jdW1lbnQgYW5kICFwYXJlbnRO
b2RlPwotICAgIGlmIChhdHRyaWJ1dGVOYW1lID09IGFueVFOYW1lKCkgfHwgIXRhcmdldEVsZW1l
bnQuaW5Eb2N1bWVudCgpIHx8ICF0YXJnZXRFbGVtZW50LnBhcmVudE5vZGUoKSkKKyAgICAvLyBG
SVhNRTogRG8gd2UgcmVhbGx5IG5lZWQgdG8gY2hlY2sgYm90aCBpc0Nvbm5lY3RlZCBhbmQgIXBh
cmVudE5vZGU/CisgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gYW55UU5hbWUoKSB8fCAhdGFyZ2V0
RWxlbWVudC5pc0Nvbm5lY3RlZCgpIHx8ICF0YXJnZXRFbGVtZW50LnBhcmVudE5vZGUoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQ1NTUHJvcGVydHlJRCBpZCA9IGNzc1Byb3BlcnR5SUQoYXR0
cmlidXRlTmFtZS5sb2NhbE5hbWUoKSk7CkBAIC0yNjcsOCArMjY3LDggQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGFwcGx5Q1NTUHJvcGVydHlUb1RhcmdldEFuZEluc3RhbmNlcyhTVkdFbGVtZW50JiB0
YXJnZXRFbGVtZW4KIAogc3RhdGljIGlubGluZSB2b2lkIHJlbW92ZUNTU1Byb3BlcnR5RnJvbVRh
cmdldEFuZEluc3RhbmNlcyhTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogewotICAgIC8vIEZJWE1FOiBEbyB3ZSByZWFsbHkgbmVl
ZCB0byBjaGVjayBib3RoIGluRG9jdW1lbnQgYW5kICFwYXJlbnROb2RlPwotICAgIGlmIChhdHRy
aWJ1dGVOYW1lID09IGFueVFOYW1lKCkgfHwgIXRhcmdldEVsZW1lbnQuaW5Eb2N1bWVudCgpIHx8
ICF0YXJnZXRFbGVtZW50LnBhcmVudE5vZGUoKSkKKyAgICAvLyBGSVhNRTogRG8gd2UgcmVhbGx5
IG5lZWQgdG8gY2hlY2sgYm90aCBpc0Nvbm5lY3RlZCBhbmQgIXBhcmVudE5vZGU/CisgICAgaWYg
KGF0dHJpYnV0ZU5hbWUgPT0gYW55UU5hbWUoKSB8fCAhdGFyZ2V0RWxlbWVudC5pc0Nvbm5lY3Rl
ZCgpIHx8ICF0YXJnZXRFbGVtZW50LnBhcmVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQ1NTUHJvcGVydHlJRCBpZCA9IGNzc1Byb3BlcnR5SUQoYXR0cmlidXRlTmFtZS5sb2NhbE5h
bWUoKSk7CkBAIC0yODksNyArMjg5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIG5vdGlmeVRhcmdl
dEFib3V0QW5pbVZhbENoYW5nZShTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50LCBjb24KIAogc3Rh
dGljIGlubGluZSB2b2lkIG5vdGlmeVRhcmdldEFuZEluc3RhbmNlc0Fib3V0QW5pbVZhbENoYW5n
ZShTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKQogewotICAgIGlmIChhdHRyaWJ1dGVOYW1lID09IGFueVFOYW1lKCkgfHwgIXRhcmdl
dEVsZW1lbnQuaW5Eb2N1bWVudCgpIHx8ICF0YXJnZXRFbGVtZW50LnBhcmVudE5vZGUoKSkKKyAg
ICBpZiAoYXR0cmlidXRlTmFtZSA9PSBhbnlRTmFtZSgpIHx8ICF0YXJnZXRFbGVtZW50LmlzQ29u
bmVjdGVkKCkgfHwgIXRhcmdldEVsZW1lbnQucGFyZW50Tm9kZSgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBTVkdFbGVtZW50OjpJbnN0YW5jZVVwZGF0ZUJsb2NrZXIgYmxvY2tlcih0YXJnZXRF
bGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCA3MjlkNTg4YjQ5NGViOWU2
NzU0ZTA1MzRjZDk1ODRhYThhZWYzZjJkLi5mZGMxMGVmNjY3MTU2YTllMDMxMmFmNWUzZGM0MDZh
OTRmNDJkYTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0zNjMsNyArMzYzLDcg
QEAgdm9pZCBTVkdFbGVtZW50OjpyZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IoU1ZHUGFyc2lu
Z0Vycm9yIGVycm9yLCBjb25zdCBRdWFsaWYKIAogdm9pZCBTVkdFbGVtZW50OjpyZW1vdmVkRnJv
bShDb250YWluZXJOb2RlJiByb290UGFyZW50KQogewotICAgIGJvb2wgd2FzSW5Eb2N1bWVudCA9
IHJvb3RQYXJlbnQuaW5Eb2N1bWVudCgpOworICAgIGJvb2wgd2FzSW5Eb2N1bWVudCA9IHJvb3RQ
YXJlbnQuaXNDb25uZWN0ZWQoKTsKICAgICBpZiAod2FzSW5Eb2N1bWVudCkKICAgICAgICAgdXBk
YXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oZmFsc2UsIHRoaXMpOwogCkBAIC05NzcsNyAr
OTc3LDcgQEAgdm9pZCBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICAvLyBOb3RpZnkgcmVzb3VyY2VzIGFib3V0IGlk
IGNoYW5nZXMsIHRoaXMgaXMgaW1wb3J0YW50IGFzIHdlIGNhY2hlIHJlc291cmNlcyBieSBpZCBp
biBTVkdEb2N1bWVudEV4dGVuc2lvbnMKICAgICAgICAgaWYgKGlzPFJlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyPihyZW5kZXJlcikpCiAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lcj4oKnJlbmRlcmVyKS5pZENoYW5nZWQoKTsKLSAgICAgICAgaWYgKGluRG9j
dW1lbnQoKSkKKyAgICAgICAgaWYgKGlzQ29ubmVjdGVkKCkpCiAgICAgICAgICAgICBidWlsZFBl
bmRpbmdSZXNvdXJjZXNJZk5lZWRlZCgpOwogICAgICAgICBpbnZhbGlkYXRlSW5zdGFuY2VzKCk7
CiAgICAgICAgIHJldHVybjsKQEAgLTk5NCw3ICs5OTQsNyBAQCBOb2RlOjpJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IFNWR0VsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBy
b290UAogCiB2b2lkIFNWR0VsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlc0lmTmVlZGVkKCkK
IHsKLSAgICBpZiAoIW5lZWRzUGVuZGluZ1Jlc291cmNlSGFuZGxpbmcoKSB8fCAhaW5Eb2N1bWVu
dCgpIHx8IGlzSW5TaGFkb3dUcmVlKCkpCisgICAgaWYgKCFuZWVkc1BlbmRpbmdSZXNvdXJjZUhh
bmRsaW5nKCkgfHwgIWlzQ29ubmVjdGVkKCkgfHwgaXNJblNoYWRvd1RyZWUoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgU1ZHRG9jdW1lbnRFeHRlbnNpb25zJiBleHRlbnNpb25zID0gZG9jdW1l
bnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCk7CkBAIC0xMDY3LDcgKzEwNjcsNyBAQCBBZmZpbmVU
cmFuc2Zvcm0gU1ZHRWxlbWVudDo6bG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZHTG9j
YXRhYmxlOjpDVE1TY29wZQogdm9pZCBTVkdFbGVtZW50Ojp1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJ
bmZvcm1hdGlvbihib29sIGhhc1JlbGF0aXZlTGVuZ3RocywgU1ZHRWxlbWVudCogZWxlbWVudCkK
IHsKICAgICAvLyBJZiB3ZSdyZSBub3QgeWV0IGluIGEgZG9jdW1lbnQsIHRoaXMgZnVuY3Rpb24g
d2lsbCBiZSBjYWxsZWQgYWdhaW4gZnJvbSBpbnNlcnRlZEludG8oKS4gRG8gbm90aGluZyBub3cu
Ci0gICAgaWYgKCFpbkRvY3VtZW50KCkpCisgICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBBbiBlbGVtZW50IHdhbnRzIHRvIG5vdGlmeSB1cyB0aGF0IGl0
cyBvd24gcmVsYXRpdmUgbGVuZ3RocyBzdGF0ZSBjaGFuZ2VkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwCmluZGV4IDlmODU5YThj
MWU2NjY0MzlhMmYzYmEyZWIxNDYwOGM4NjI0YjU1NjMuLmIwZDM4ZWNhYTkyZTBhODUwMDUzOTU3
NmVmYTk3MDAxMTQwYWNmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgYm9vbCBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoU1ZHRWxlbWVudCog
dGFyZ2V0RWxlbWUKICAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7CiAgICAgaWYgKCFpc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghdGFy
Z2V0RWxlbWVudC0+aW5Eb2N1bWVudCgpKQorICAgIGlmICghdGFyZ2V0RWxlbWVudC0+aXNDb25u
ZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBIYW5kbGUgZHluYW1pYyB1
cGRhdGVzIG9mIHRoZSAnZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCcgYXR0cmlidXRlLiBPbmx5
IHBvc3NpYmxlIGNhc2U6IGNoYW5naW5nIGZyb20gJ3RydWUnIHRvICdmYWxzZScKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGMyY2Q2ZjY1YjMwYjdhMGJlZjQ0
NzhkNWFjNDcwOWVkOWNmZDIxYTIuLjE5ZWY2M2IyOWE5NDI5NzllYjk4YWY2NzdhYTI2YTIzMWRh
NWY3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtOTgs
NyArOTgsNyBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpyZXF1ZXN0SW1hZ2VSZXNvdXJjZSgp
CiB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiB7CiAgICAg
Y2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsKLSAgICBpZiAoIWluRG9jdW1lbnQoKSkKKyAgICBp
ZiAoIWlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBpZDsKQEAg
LTE2NCwxMyArMTY0LDEzIEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmZpbmlzaGVkSW5zZXJ0
aW5nU3VidHJlZSgpCiB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWlu
ZXJOb2RlJiByb290UGFyZW50KQogewogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6cmVtb3ZlZEZyb20ocm9vdFBhcmVudCk7Ci0gICAgaWYgKHJvb3RQYXJlbnQuaW5E
b2N1bWVudCgpKQorICAgIGlmIChyb290UGFyZW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIGNs
ZWFyUmVzb3VyY2VSZWZlcmVuY2VzKCk7CiB9CiAKIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikKIHsKLSAgICBpZiAoIWluRG9jdW1lbnQoKSkK
KyAgICBpZiAoIWlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQq
IHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNl
RWxlbWVudC5jcHAKaW5kZXggNjQ3NGI5YTQyYjhkNjM3YWQ2N2QzNjI2NDUzNWU5YjM4ODhiYzVm
ZC4uNGE5M2M3ZTI4MDlhYjliOGEzMWQ2MDg1YjZhYzE4NDMwM2I2MTYyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBTVkdG
b250RWxlbWVudCogU1ZHRm9udEZhY2VFbGVtZW50Ojphc3NvY2lhdGVkRm9udEVsZW1lbnQoKSBj
b25zdAogCiB2b2lkIFNWR0ZvbnRGYWNlRWxlbWVudDo6cmVidWlsZEZvbnRGYWNlKCkKIHsKLSAg
ICBpZiAoIWluRG9jdW1lbnQoKSkgeworICAgIGlmICghaXNDb25uZWN0ZWQoKSkgewogICAgICAg
ICBBU1NFUlQoIW1fZm9udEVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjcz
LDcgKzI3Myw3IEBAIHZvaWQgU1ZHRm9udEZhY2VFbGVtZW50OjpyZWJ1aWxkRm9udEZhY2UoKQog
Tm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTVkdGb250RmFjZUVsZW1lbnQ6Omlu
c2VydGVkSW50byhDb250YWluZXJOb2RlJiByb290UGFyZW50KQogewogICAgIFNWR0VsZW1lbnQ6
Omluc2VydGVkSW50byhyb290UGFyZW50KTsKLSAgICBpZiAoIXJvb3RQYXJlbnQuaW5Eb2N1bWVu
dCgpKSB7CisgICAgaWYgKCFyb290UGFyZW50LmlzQ29ubmVjdGVkKCkpIHsKICAgICAgICAgQVNT
RVJUKCFtX2ZvbnRFbGVtZW50KTsKICAgICAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiAgICAg
fQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgU1ZHRm9udEZhY2VFbGVtZW50OjpyZW1vdmVkRnJv
bShDb250YWluZXJOb2RlJiByb290UGFyZW50KQogewogICAgIFNWR0VsZW1lbnQ6OnJlbW92ZWRG
cm9tKHJvb3RQYXJlbnQpOwogCi0gICAgaWYgKHJvb3RQYXJlbnQuaW5Eb2N1bWVudCgpKSB7Cisg
ICAgaWYgKHJvb3RQYXJlbnQuaXNDb25uZWN0ZWQoKSkgewogICAgICAgICBtX2ZvbnRFbGVtZW50
ID0gbnVsbHB0cjsKICAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkudW5y
ZWdpc3RlclNWR0ZvbnRGYWNlRWxlbWVudCh0aGlzKTsKICAgICAgICAgbV9mb250RmFjZVJ1bGUt
Pm11dGFibGVQcm9wZXJ0aWVzKCkuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxl
bWVudC5jcHAKaW5kZXggZGNjOGM2ODc4YWYzNmY0YmNlOTdmN2IzMGE5ZTRjOWMxY2ExM2M3ZC4u
YjM2MWI3NDFlOTIzOGM5NWYzMmEzNGNkMzgzNTYzNWE5MWViOWI4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIFNWR0ltYWdl
RWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKCkKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlv
blJlcXVlc3QgU1ZHSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYgcm9v
dFBhcmVudCkKIHsKICAgICBTVkdHcmFwaGljc0VsZW1lbnQ6Omluc2VydGVkSW50byhyb290UGFy
ZW50KTsKLSAgICBpZiAoIXJvb3RQYXJlbnQuaW5Eb2N1bWVudCgpKQorICAgIGlmICghcm9vdFBh
cmVudC5pc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKICAgICAv
LyBVcGRhdGUgaW1hZ2UgbG9hZGVyLCBhcyBzb29uIGFzIHdlJ3JlIGxpdmluZyBpbiB0aGUgdHJl
ZS4KICAgICAvLyBXZSBjYW4gb25seSByZXNvbHZlIGJhc2UgVVJJcyBwcm9wZXJseSwgYWZ0ZXIg
dGhhdCEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAKaW5kZXggNTVjMGU2ODdj
NWM5Y2U4Nzg0YjBmNzExZTcxNTAyMDA5MDI5NjcyOS4uZmY3ZDQ4NzJkNjk0NTY3ZTc1MmMzZmNm
YTcwOTBmN2NmY2RhNDcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRo
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAK
QEAgLTU4LDcgKzU4LDcgQEAgU1ZHTVBhdGhFbGVtZW50Ojp+U1ZHTVBhdGhFbGVtZW50KCkKIHZv
aWQgU1ZHTVBhdGhFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiB7CiAgICAgY2xlYXJS
ZXNvdXJjZVJlZmVyZW5jZXMoKTsKLSAgICBpZiAoIWluRG9jdW1lbnQoKSkKKyAgICBpZiAoIWlz
Q29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBpZDsKQEAgLTg5LDcg
Kzg5LDcgQEAgdm9pZCBTVkdNUGF0aEVsZW1lbnQ6OmNsZWFyUmVzb3VyY2VSZWZlcmVuY2VzKCkK
IE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU1ZHTVBhdGhFbGVtZW50OjppbnNl
cnRlZEludG8oQ29udGFpbmVyTm9kZSYgcm9vdFBhcmVudCkKIHsKICAgICBTVkdFbGVtZW50Ojpp
bnNlcnRlZEludG8ocm9vdFBhcmVudCk7Ci0gICAgaWYgKHJvb3RQYXJlbnQuaW5Eb2N1bWVudCgp
KQorICAgIGlmIChyb290UGFyZW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybiBJbnNl
cnRpb25TaG91bGRDYWxsRmluaXNoZWRJbnNlcnRpbmdTdWJ0cmVlOwogICAgIHJldHVybiBJbnNl
cnRpb25Eb25lOwogfQpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgU1ZHTVBhdGhFbGVtZW50Ojpy
ZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiByb290UGFyZW50KQogewogICAgIFNWR0VsZW1lbnQ6
OnJlbW92ZWRGcm9tKHJvb3RQYXJlbnQpOwogICAgIG5vdGlmeVBhcmVudE9mUGF0aENoYW5nZSgm
cm9vdFBhcmVudCk7Ci0gICAgaWYgKHJvb3RQYXJlbnQuaW5Eb2N1bWVudCgpKQorICAgIGlmIChy
b290UGFyZW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIGNsZWFyUmVzb3VyY2VSZWZlcmVuY2Vz
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCAwNzQxMjk3ZTBk
YTBlMWYwMTZiZGEyZjhlOWQ4NDI3ZWU1NzEwMjdlLi4xYmU3Mzc4NjhjZjcwY2UxMzdkZTUxNGQy
OTM4ZTFhMDBmMDEwZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC0x
NjgsNyArMTY4LDcgQEAgRnJhbWUqIFNWR1NWR0VsZW1lbnQ6OmZyYW1lRm9yQ3VycmVudFNjYWxl
KCkgY29uc3QKIHsKICAgICAvLyBUaGUgYmVoYXZpb3Igb2YgY3VycmVudFNjYWxlKCkgaXMgdW5k
ZWZpbmVkIHdoZW4gd2UncmUgZGVhbGluZyB3aXRoIG5vbi1zdGFuZGFsb25lIFNWRyBkb2N1bWVu
dHMuCiAgICAgLy8gSWYgdGhlIGRvY3VtZW50IGlzIGVtYmVkZGVkLCB0aGUgc2NhbGluZyBpcyBo
YW5kbGVkIGJ5IHRoZSBob3N0IHJlbmRlcmVyLgotICAgIGlmICghaW5Eb2N1bWVudCgpIHx8ICFp
c091dGVybW9zdFNWR1NWR0VsZW1lbnQoKSkKKyAgICBpZiAoIWlzQ29ubmVjdGVkKCkgfHwgIWlz
T3V0ZXJtb3N0U1ZHU1ZHRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBG
cmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgcmV0dXJuIGZyYW1lICYmIGZy
YW1lLT5pc01haW5GcmFtZSgpID8gZnJhbWUgOiBudWxscHRyOwpAQCAtNDY2LDcgKzQ2Niw3IEBA
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTVkdFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsCiAKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJl
cXVlc3QgU1ZHU1ZHRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIHJvb3RQYXJl
bnQpCiB7Ci0gICAgaWYgKHJvb3RQYXJlbnQuaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKHJvb3RQ
YXJlbnQuaXNDb25uZWN0ZWQoKSkgewogICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVu
c2lvbnMoKS5hZGRUaW1lQ29udGFpbmVyKHRoaXMpOwogCiAgICAgICAgIC8vIEFuaW1hdGlvbnMg
YXJlIHN0YXJ0ZWQgYXQgdGhlIGVuZCBvZiBkb2N1bWVudCBwYXJzaW5nIGFuZCBhZnRlciBmaXJp
bmcgdGhlIGxvYWQgZXZlbnQsCkBAIC00ODAsNyArNDgwLDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBTVkdTVkdFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9k
ZSYgcm8KIAogdm9pZCBTVkdTVkdFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBy
b290UGFyZW50KQogewotICAgIGlmIChyb290UGFyZW50LmluRG9jdW1lbnQoKSkKKyAgICBpZiAo
cm9vdFBhcmVudC5pc0Nvbm5lY3RlZCgpKQogICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4
dGVuc2lvbnMoKS5yZW1vdmVUaW1lQ29udGFpbmVyKHRoaXMpOwogICAgIFNWR0dyYXBoaWNzRWxl
bWVudDo6cmVtb3ZlZEZyb20ocm9vdFBhcmVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2Ny
aXB0RWxlbWVudC5jcHAKaW5kZXggNjY5YWRhZWQ4MTY1N2Q4YzAyZDhjM2U2OTVjZTI2MTRlNWQ2
YjI5Mi4uNDE0YzU1Y2E4MTgyYTI2ZTIwZDI0MzIwMmM1ZmZkNTFkNDRkZWJjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFNW
R1NjcmlwdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNWR1NjcmlwdEVs
ZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiByb290UGFyZW50KQogewogICAgIFNW
R0VsZW1lbnQ6Omluc2VydGVkSW50byhyb290UGFyZW50KTsKLSAgICBpZiAocm9vdFBhcmVudC5p
bkRvY3VtZW50KCkpCisgICAgaWYgKHJvb3RQYXJlbnQuaXNDb25uZWN0ZWQoKSkKICAgICAgICAg
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQodGhpcyk7
CiAgICAgcmV0dXJuIHNob3VsZENhbGxGaW5pc2hlZEluc2VydGluZ1N1YnRyZWUocm9vdFBhcmVu
dCkgPyBJbnNlcnRpb25TaG91bGRDYWxsRmluaXNoZWRJbnNlcnRpbmdTdWJ0cmVlIDogSW5zZXJ0
aW9uRG9uZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKaW5kZXggMGEy
ZTE1ZmVhYjQ1MzY4NzgzMzk3ZmI2NTZmNTExMDNjZWZjMzIwOS4uOGY4ZjllZjgwYTI0YWZiN2Zj
YjI3NzFiZDExMzJiZTE3NDY4OWJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0eWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVu
dC5jcHAKQEAgLTExNSw5ICsxMTUsOSBAQCB2b2lkIFNWR1N0eWxlRWxlbWVudDo6ZmluaXNoUGFy
c2luZ0NoaWxkcmVuKCkKIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTVkdT
dHlsZUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiByb290UGFyZW50KQogewot
ICAgIGJvb2wgd2FzSW5Eb2N1bWVudCA9IGluRG9jdW1lbnQoKTsKKyAgICBib29sIHdhc0luRG9j
dW1lbnQgPSBpc0Nvbm5lY3RlZCgpOwogICAgIGF1dG8gcmVzdWx0ID0gU1ZHRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvKHJvb3RQYXJlbnQpOwotICAgIGlmIChyb290UGFyZW50LmluRG9jdW1lbnQoKSAm
JiAhd2FzSW5Eb2N1bWVudCkKKyAgICBpZiAocm9vdFBhcmVudC5pc0Nvbm5lY3RlZCgpICYmICF3
YXNJbkRvY3VtZW50KQogICAgICAgICBtX3N0eWxlU2hlZXRPd25lci5pbnNlcnRlZEludG9Eb2N1
bWVudCgqdGhpcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCBO
b2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNWR1N0eWxlRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvKENvbnRhaW5lck5vZGUmCiB2b2lkIFNWR1N0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb20o
Q29udGFpbmVyTm9kZSYgcm9vdFBhcmVudCkKIHsKICAgICBTVkdFbGVtZW50OjpyZW1vdmVkRnJv
bShyb290UGFyZW50KTsKLSAgICBpZiAocm9vdFBhcmVudC5pbkRvY3VtZW50KCkgJiYgIWluRG9j
dW1lbnQoKSkKKyAgICBpZiAocm9vdFBhcmVudC5pc0Nvbm5lY3RlZCgpICYmICFpc0Nvbm5lY3Rl
ZCgpKQogICAgICAgICBtX3N0eWxlU2hlZXRPd25lci5yZW1vdmVkRnJvbURvY3VtZW50KCp0aGlz
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKaW5kZXggZmJlN2E2MTQx
ZWEwY2RiNzAwNGExNTU2MTExMjVlZWJlNzZhODMwNS4uYTRmZjQ2YWIwZTcyMGRmYzNkMjFiZTA1
OWNiOTY4ODJlY2JhNjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCkBA
IC04OSw3ICs4OSw3IEBAIHZvaWQgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmF0dGFjaChS
ZWZQdHI8RWxlbWVudD4mJiB0YXJnZXQpCiB7CiAgICAgQVNTRVJUKCFpc0F0dGFjaGVkKCkpOwog
ICAgIEFTU0VSVCh0YXJnZXQuZ2V0KCkpOwotICAgIEFTU0VSVCh0YXJnZXQtPmluRG9jdW1lbnQo
KSk7CisgICAgQVNTRVJUKHRhcmdldC0+aXNDb25uZWN0ZWQoKSk7CiAKICAgICB0YXJnZXQtPmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTVN1YnRyZWVNb2RpZmllZEV2ZW50LCAqdGhp
cywgZmFsc2UpOwogICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9N
Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnRFdmVudCwgKnRoaXMsIGZhbHNlKTsKQEAgLTE2NCw3ICsx
NjQsNyBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpkZXRhY2hUYXJnZXQoKQogICAgIGlmIChjb250
YWluZXIpCiAgICAgICAgIGNvbnRhaW5lci0+c2V0VGV4dENvbnRlbnQoZW1wdHlDb250ZW50KTsK
IAotICAgIGlmICghaW5Eb2N1bWVudCgpKQorICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gTWFyayB0aGUgcmVmZXJlbmNlZCBJRCBhcyBwZW5kaW5nLgpA
QCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291
cmNlKCkKICAgICBtX3RhcmdldExpc3RlbmVyLT5kZXRhY2goKTsKIAogICAgIC8vIElmIHdlJ3Jl
IG5vdCB5ZXQgaW4gYSBkb2N1bWVudCwgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBhZ2Fp
biBmcm9tIGluc2VydGVkSW50bygpLgotICAgIGlmICghaW5Eb2N1bWVudCgpKQorICAgIGlmICgh
aXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGlkOwpAQCAtMjU2
LDcgKzI1Niw3IEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkK
IE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU1ZHVFJlZkVsZW1lbnQ6Omluc2Vy
dGVkSW50byhDb250YWluZXJOb2RlJiByb290UGFyZW50KQogewogICAgIFNWR0VsZW1lbnQ6Omlu
c2VydGVkSW50byhyb290UGFyZW50KTsKLSAgICBpZiAocm9vdFBhcmVudC5pbkRvY3VtZW50KCkp
CisgICAgaWYgKHJvb3RQYXJlbnQuaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuIEluc2Vy
dGlvblNob3VsZENhbGxGaW5pc2hlZEluc2VydGluZ1N1YnRyZWU7CiAgICAgcmV0dXJuIEluc2Vy
dGlvbkRvbmU7CiB9CkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6Zmlu
aXNoZWRJbnNlcnRpbmdTdWJ0cmVlKCkKIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnJlbW92ZWRGcm9t
KENvbnRhaW5lck5vZGUmIHJvb3RQYXJlbnQpCiB7CiAgICAgU1ZHRWxlbWVudDo6cmVtb3ZlZEZy
b20ocm9vdFBhcmVudCk7Ci0gICAgaWYgKHJvb3RQYXJlbnQuaW5Eb2N1bWVudCgpKQorICAgIGlm
IChyb290UGFyZW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIG1fdGFyZ2V0TGlzdGVuZXItPmRl
dGFjaCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcAppbmRleCA5NzVlNmExOTMyY2I5ODUw
NzU2NzYwODMyY2Y3Y2M3ODc0YTUwYzBkLi5lNDRjMzM0ZjE2NTE5YjliYTcwYjJmMGYwZjQ5ZGNj
MDM1YzkxOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBi
b29sIFNWR1Rlc3RzOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoU1ZHRWxlbWVudCogdGFyZ2V0RWxl
bWVudCwgY29uc3QgUXVhbGlmaWVkTgogICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50KTsKICAgICBp
ZiAoIWlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQtPmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIXRhcmdl
dEVsZW1lbnQtPmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHRhcmdl
dEVsZW1lbnQtPmludmFsaWRhdGVTdHlsZUFuZFJlbmRlcmVyc0ZvclN1YnRyZWUoKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKaW5k
ZXggOTJmODIyMzc2N2NhYjlkNjIwMTAyYWFlZWQzYTZmNzIyNWZlOWRiZi4uM2NkMmI4ZTdjODY5
ZGYxOWYxMmJkMTllYzcyNDdhYzkwNTI2MmI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRQYXRoRWxlbWVudC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBib29sIFNWR1RleHRQYXRoRWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB2b2lkIFNW
R1RleHRQYXRoRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogewogICAgIGNsZWFyUmVz
b3VyY2VSZWZlcmVuY2VzKCk7Ci0gICAgaWYgKCFpbkRvY3VtZW50KCkpCisgICAgaWYgKCFpc0Nv
bm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgaWQ7CkBAIC0xODcsNyAr
MTg3LDcgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OmZpbmlzaGVkSW5zZXJ0aW5nU3VidHJl
ZSgpCiB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYg
cm9vdFBhcmVudCkKIHsKICAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnJlbW92ZWRGcm9tKHJv
b3RQYXJlbnQpOwotICAgIGlmIChyb290UGFyZW50LmluRG9jdW1lbnQoKSkKKyAgICBpZiAocm9v
dFBhcmVudC5pc0Nvbm5lY3RlZCgpKQogICAgICAgICBjbGVhclJlc291cmNlUmVmZXJlbmNlcygp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCmluZGV4IGE1OWY4ZTUy
YjMyY2U0MWQyOWI2NDRkNjRhYzNjYTQ1MTU5YjFjMzIuLmE0MzI5MmNmMDA4NjE0M2FlZmYyODA2
OTE5NDQ2ZWMzNjA1YWRmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRs
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3Bw
CkBAIC00Miw3ICs0Miw3IEBAIFJlZjxTVkdUaXRsZUVsZW1lbnQ+IFNWR1RpdGxlRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtCiBOb2RlOjpJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IFNWR1RpdGxlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRh
aW5lck5vZGUmIHJvb3RQYXJlbnQpCiB7CiAgICAgU1ZHRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKHJv
b3RQYXJlbnQpOwotICAgIGlmICghcm9vdFBhcmVudC5pbkRvY3VtZW50KCkpCisgICAgaWYgKCFy
b290UGFyZW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwog
CiAgICAgaWYgKGZpcnN0Q2hpbGQoKSAmJiBkb2N1bWVudCgpLmlzU1ZHRG9jdW1lbnQoKSkKQEAg
LTUzLDcgKzUzLDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTVkdUaXRs
ZUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJgogdm9pZCBTVkdUaXRsZUVsZW1l
bnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmIHJvb3RQYXJlbnQpCiB7CiAgICAgU1ZHRWxl
bWVudDo6cmVtb3ZlZEZyb20ocm9vdFBhcmVudCk7Ci0gICAgaWYgKHJvb3RQYXJlbnQuaW5Eb2N1
bWVudCgpICYmIGRvY3VtZW50KCkuaXNTVkdEb2N1bWVudCgpKQorICAgIGlmIChyb290UGFyZW50
LmlzQ29ubmVjdGVkKCkgJiYgZG9jdW1lbnQoKS5pc1NWR0RvY3VtZW50KCkpCiAgICAgICAgIGRv
Y3VtZW50KCkudGl0bGVFbGVtZW50UmVtb3ZlZCgqdGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcAppbmRleCBlNmI0ZWY2OTczZjM2MmFiOGRmZjU2ZTkzMDkxZGI5ZGZk
OGYyMTkyLi5lMWE4ZWY3ODdmOWZmZTY1NWVlMTM1Mjk1OTAyYmU4NjY3MzA3OTAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBTVkdV
c2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU1ZHVXNl
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIHJvb3RQYXJlbnQpCiB7CiAgICAg
U1ZHR3JhcGhpY3NFbGVtZW50OjppbnNlcnRlZEludG8ocm9vdFBhcmVudCk7Ci0gICAgaWYgKGlu
RG9jdW1lbnQoKSkgeworICAgIGlmIChpc0Nvbm5lY3RlZCgpKSB7CiAgICAgICAgIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQ6Omluc2VydGVkSW50b0RvY3VtZW50KHRoaXMpOwogICAgICAg
ICBpbnZhbGlkYXRlU2hhZG93VHJlZSgpOwogICAgICAgICB1cGRhdGVFeHRlcm5hbERvY3VtZW50
KCk7CkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50Ojp1cGRhdGVTaGFkb3dU
cmVlKCkKICAgICAvLyBGSVhNRTogSXQncyBleHBlbnNpdmUgdG8gcmUtY2xvbmUgdGhlIGVudGly
ZSB0cmVlIGV2ZXJ5IHRpbWUuIFdlIHNob3VsZCBmaW5kIGEgbW9yZSBlZmZpY2llbnQgd2F5IHRv
IGhhbmRsZSB0aGlzLgogICAgIGNsZWFyU2hhZG93VHJlZSgpOwogCi0gICAgaWYgKGlzSW5TaGFk
b3dUcmVlKCkgfHwgIWluRG9jdW1lbnQoKSkKKyAgICBpZiAoaXNJblNoYWRvd1RyZWUoKSB8fCAh
aXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIHRhcmdldElEOwpA
QCAtMzI5LDcgKzMyOSw3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZURpc2FsbG93ZWRFbGVtZW50c0Zy
b21TdWJ0cmVlKFNWR0VsZW1lbnQmIHN1YnRyZWUpCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1
c2VkIG9ubHkgb24gZWxlbWVudHMgaW4gc3VidHJlZXMgdGhhdCBhcmUgbm90IHlldCBpbiBkb2N1
bWVudHMsIHNvCiAgICAgLy8gbXV0YXRpb24gZXZlbnRzIGFyZSBub3QgYSBmYWN0b3I7IHRoZXJl
IGFyZSBubyBldmVudCBsaXN0ZW5lcnMgdG8gaGFuZGxlIHRob3NlIGV2ZW50cy4KICAgICAvLyBB
c3NlcnQgdGhhdCBpdCdzIG5vdCBpbiBhIGRvY3VtZW50IHRvIG1ha2Ugc3VyZSBjYWxsZXJzIGFy
ZSBzdGlsbCB1c2luZyBpdCB0aGlzIHdheS4KLSAgICBBU1NFUlQoIXN1YnRyZWUuaW5Eb2N1bWVu
dCgpKTsKKyAgICBBU1NFUlQoIXN1YnRyZWUuaXNDb25uZWN0ZWQoKSk7CiAKICAgICBWZWN0b3I8
RWxlbWVudCo+IGRpc2FsbG93ZWRFbGVtZW50czsKICAgICBhdXRvIGRlc2NlbmRhbnRzID0gZGVz
Y2VuZGFudHNPZlR5cGU8RWxlbWVudD4oc3VidHJlZSk7CkBAIC00MDksNyArNDA5LDcgQEAgU1ZH
RWxlbWVudCogU1ZHVXNlRWxlbWVudDo6ZmluZFRhcmdldChTdHJpbmcqIHRhcmdldElEKSBjb25z
dAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvJiB0YXJnZXQgPSBkb3duY2FzdDxT
VkdFbGVtZW50PigqdGFyZ2V0Q2FuZGlkYXRlKTsKIAotICAgIGlmICghdGFyZ2V0LmluRG9jdW1l
bnQoKSB8fCBpc0Rpc2FsbG93ZWRFbGVtZW50KHRhcmdldCkpCisgICAgaWYgKCF0YXJnZXQuaXND
b25uZWN0ZWQoKSB8fCBpc0Rpc2FsbG93ZWRFbGVtZW50KHRhcmdldCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgLy8gUmVqZWN0IGFueSB0YXJnZXQgdGhhdCBoYXMgYWxyZWFkeSBi
ZWVuIGNsb25lZCB0byBjcmVhdGUgb25lIG9mIHRoZSBhbmNlc3RvcnMgb2YgdGhpcyBlbGVtZW50
LApAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6ZmluaXNoUGFyc2luZ0No
aWxkcmVuKCkKIHZvaWQgU1ZHVXNlRWxlbWVudDo6dXBkYXRlRXh0ZXJuYWxEb2N1bWVudCgpCiB7
CiAgICAgVVJMIGV4dGVybmFsRG9jdW1lbnRVUkw7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSAmJiBp
c0V4dGVybmFsVVJJUmVmZXJlbmNlKGhyZWYoKSwgZG9jdW1lbnQoKSkpIHsKKyAgICBpZiAoaXND
b25uZWN0ZWQoKSAmJiBpc0V4dGVybmFsVVJJUmVmZXJlbmNlKGhyZWYoKSwgZG9jdW1lbnQoKSkp
IHsKICAgICAgICAgZXh0ZXJuYWxEb2N1bWVudFVSTCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwo
aHJlZigpKTsKICAgICAgICAgaWYgKCFleHRlcm5hbERvY3VtZW50VVJMLmhhc0ZyYWdtZW50SWRl
bnRpZmllcigpKQogICAgICAgICAgICAgZXh0ZXJuYWxEb2N1bWVudFVSTCA9IFVSTCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAppbmRleCA4
MzJjYTBkMDBmMTFiOTFmZTRjNTZlYWUwZDY0MDJkY2UxNWJiYWI1Li4yNTUxYWY2MDAxODNkNDNm
Yzg2ODgwOGQ3OWYyYTYwOTU3Zjk5N2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
YW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5p
bWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgU1ZHU01J
TEVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkKIHsKICAgICBjbGVhclJlc291cmNlUmVm
ZXJlbmNlcygpOwogCi0gICAgaWYgKCFpbkRvY3VtZW50KCkpIHsKKyAgICBpZiAoIWlzQ29ubmVj
dGVkKCkpIHsKICAgICAgICAgLy8gUmVzZXQgdGhlIHRhcmdldCBlbGVtZW50IGlmIHdlIGFyZSBu
byBsb25nZXIgaW4gdGhlIGRvY3VtZW50LgogICAgICAgICBzZXRUYXJnZXRFbGVtZW50KG51bGxw
dHIpOwogICAgICAgICByZXR1cm47CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBTVkdTTUlMRWxl
bWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogICAgICAgICB0YXJnZXQgPSBTVkdVUklSZWZl
cmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGhyZWYsIGRvY3VtZW50KCksICZpZCk7
CiAgICAgU1ZHRWxlbWVudCogc3ZnVGFyZ2V0ID0gaXM8U1ZHRWxlbWVudD4odGFyZ2V0KSA/IGRv
d25jYXN0PFNWR0VsZW1lbnQ+KHRhcmdldCkgOiBudWxscHRyOwogCi0gICAgaWYgKHN2Z1Rhcmdl
dCAmJiAhc3ZnVGFyZ2V0LT5pbkRvY3VtZW50KCkpCisgICAgaWYgKHN2Z1RhcmdldCAmJiAhc3Zn
VGFyZ2V0LT5pc0Nvbm5lY3RlZCgpKQogICAgICAgICBzdmdUYXJnZXQgPSBudWxscHRyOwogCiAg
ICAgaWYgKHN2Z1RhcmdldCAhPSB0YXJnZXRFbGVtZW50KCkpCkBAIC0yNTUsNyArMjU1LDcgQEAg
dm9pZCBTVkdTTUlMRWxlbWVudDo6cmVzZXQoKQogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9u
UmVxdWVzdCBTVkdTTUlMRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIHJvb3RQ
YXJlbnQpCiB7CiAgICAgU1ZHRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKHJvb3RQYXJlbnQpOwotICAg
IGlmICghcm9vdFBhcmVudC5pbkRvY3VtZW50KCkpCisgICAgaWYgKCFyb290UGFyZW50LmlzQ29u
bmVjdGVkKCkpCiAgICAgICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogCiAgICAgLy8gVmVyaWZ5
IHdlIGFyZSBub3QgaW4gPHVzZT4gaW5zdGFuY2UgdHJlZS4KQEAgLTI5MCw3ICsyOTAsNyBAQCB2
b2lkIFNWR1NNSUxFbGVtZW50OjpmaW5pc2hlZEluc2VydGluZ1N1YnRyZWUoKQogCiB2b2lkIFNW
R1NNSUxFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiByb290UGFyZW50KQogewot
ICAgIGlmIChyb290UGFyZW50LmluRG9jdW1lbnQoKSkgeworICAgIGlmIChyb290UGFyZW50Lmlz
Q29ubmVjdGVkKCkpIHsKICAgICAgICAgY2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsKICAgICAg
ICAgZGlzY29ubmVjdENvbmRpdGlvbnMoKTsKICAgICAgICAgc2V0VGFyZ2V0RWxlbWVudChudWxs
cHRyKTsKQEAgLTQ4MSw3ICs0ODEsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbgogICAgICAg
ICAgICAgcGFyc2VCZWdpbk9yRW5kKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZH
TmFtZXM6OmVuZEF0dHIpLCBFbmQpOwogICAgICAgICB9CiAgICAgICAgIHBhcnNlQmVnaW5PckVu
ZCh2YWx1ZS5zdHJpbmcoKSwgQmVnaW4pOwotICAgICAgICBpZiAoaW5Eb2N1bWVudCgpKQorICAg
ICAgICBpZiAoaXNDb25uZWN0ZWQoKSkKICAgICAgICAgICAgIGNvbm5lY3RDb25kaXRpb25zKCk7
CiAgICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjplbmRBdHRyKSB7CiAgICAgICAgIGlm
ICghbV9jb25kaXRpb25zLmlzRW1wdHkoKSkgewpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgU1ZH
U01JTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluCiAgICAgICAgICAgICBwYXJzZUJlZ2luT3JFbmQoYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6YmVnaW5BdHRyKSwgQmVnaW4pOwogICAgICAg
ICB9CiAgICAgICAgIHBhcnNlQmVnaW5PckVuZCh2YWx1ZS5zdHJpbmcoKSwgRW5kKTsKLSAgICAg
ICAgaWYgKGluRG9jdW1lbnQoKSkKKyAgICAgICAgaWYgKGlzQ29ubmVjdGVkKCkpCiAgICAgICAg
ICAgICBjb25uZWN0Q29uZGl0aW9ucygpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1l
czo6b25lbmRBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5lbmRFdmVudEV2ZW50LCBuYW1lLCB2YWx1ZSk7CkBAIC01MjIsNyArNTIyLDcgQEAgdm9p
ZCBTVkdTTUlMRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKICAgICBlbHNlIGlmIChhdHRyTmFtZS5tYXRjaGVzKFhMaW5rTmFtZXM6Omhy
ZWZBdHRyKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlz
KTsKICAgICAgICAgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKLSAgICB9IGVsc2UgaWYgKGluRG9j
dW1lbnQoKSkgeworICAgIH0gZWxzZSBpZiAoaXNDb25uZWN0ZWQoKSkgewogICAgICAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmJlZ2luQXR0cikKICAgICAgICAgICAgIGJlZ2luTGlzdENo
YW5nZWQoZWxhcHNlZCgpKTsKICAgICAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmVuZEF0dHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwCmluZGV4IDA5NDljNGQ2MTk4
NzA3NjI1MDA5YTYyZDk0N2M4NGQ2MjhiNDhiMzYuLmQwNGJkNjJjMTQ0M2ExYTg3OTk5Zjk2YjAw
M2MyZjcyYzg4NjMwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVT
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwCkBAIC0xODEs
NyArMTgxLDcgQEAgc3RhdGljIE5vZGUqIGZpbmRSb290Tm9kZShOb2RlKiBub2RlKQogewogICAg
IGlmIChpczxBdHRyPigqbm9kZSkpCiAgICAgICAgIG5vZGUgPSBkb3duY2FzdDxBdHRyPigqbm9k
ZSkub3duZXJFbGVtZW50KCk7Ci0gICAgaWYgKG5vZGUtPmluRG9jdW1lbnQoKSkKKyAgICBpZiAo
bm9kZS0+aXNDb25uZWN0ZWQoKSkKICAgICAgICAgbm9kZSA9ICZub2RlLT5kb2N1bWVudCgpOwog
ICAgIGVsc2UgewogICAgICAgICB3aGlsZSAoTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9k
ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwCmluZGV4IDI5Y2Q1NzMzZTQwZWZiODNkYWI0MWM2ZTRmYjkwNzlhMDc3
ZDlhMGQuLmJjZTBmMGU1ZjhhNWJhNDM3MWVkODUxM2FkYmViMTE4MTg0YjZkODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1s
Mi5jcHAKQEAgLTg1Nyw3ICs4NTcsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjplbmRFbGVt
ZW50TnMoKQogCiAgICAgLy8gVGhlIGVsZW1lbnQncyBwYXJlbnQgbWF5IGhhdmUgYWxyZWFkeSBi
ZWVuIHJlbW92ZWQgZnJvbSBkb2N1bWVudC4KICAgICAvLyBQYXJzaW5nIGNvbnRpbnVlcyBpbiB0
aGlzIGNhc2UsIGJ1dCBzY3JpcHRzIGFyZW4ndCBleGVjdXRlZC4KLSAgICBpZiAoIWVsZW1lbnQu
aW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKCFlbGVtZW50LmlzQ29ubmVjdGVkKCkpIHsKICAgICAg
ICAgcG9wQ3VycmVudE5vZGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01Ob2RlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9N
L0RPTU5vZGUubW0KaW5kZXggODcxYzllOTA5NmU3NTAxMDA2YzZiNjM3ZGIyNzc4NDkzMmRlZjMx
ZS4uZWMxMzBmNGY0NjNiZTcyNjJkZTI5Y2JmY2E5NmI0YTgyZDI1OWFlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvRE9NL0RPTU5vZGUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
RE9NL0RPTU5vZGUubW0KQEAgLTE5OSw3ICsxOTksNyBAQCAtICh2b2lkKXNldFRleHRDb250ZW50
OihOU1N0cmluZyAqKW5ld1RleHRDb250ZW50CiAtIChCT09MKWlzQ29ubmVjdGVkCiB7CiAgICAg
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiB1bndyYXAoKnNlbGYpLmlu
RG9jdW1lbnQoKTsKKyAgICByZXR1cm4gdW53cmFwKCpzZWxmKS5pc0Nvbm5lY3RlZCgpOwogfQog
CiAtIChET01FbGVtZW50ICopcGFyZW50RWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KaW5kZXggZDUwMzY3YzU3NDljNjZjMDQ2YWU0OWUzNjMwNWFkMzU3M2IzN2Y3OS4u
NjZjOTQ0YzRmNTdkZGM1ODgyMTIxY2ZjYTkwYjFmNTkyYWYyNGYzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0xNTk0LDkgKzE1OTQsOSBAQCAtICh2b2lkKXNlbGVj
dE5TUmFuZ2U6KE5TUmFuZ2UpcmFuZ2Ugb25FbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudAog
ICAgICAgICByZXR1cm47CiAKICAgICBOb2RlKiBub2RlID0gY29yZShlbGVtZW50KTsKLSAgICBp
ZiAoIW5vZGUtPmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIW5vZGUtPmlzQ29ubmVjdGVkKCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0
UmFuZ2VPbkVsZW1lbnQocmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCwgKm5vZGUpOwogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300432</attachid>
            <date>2017-02-02 12:27:17 -0800</date>
            <delta_ts>2017-02-02 13:30:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167743-20170202122503.patch</filename>
            <type>text/plain</type>
            <size>134353</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExNTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFjOTg3MTE4NmM0YzVl
MmExMTE1MDk3ODQ1NTUyODZlYTZkNTM0NS4uY2E2MGQ5ZjZlMDYwNGE3ODVjMGVmODgzNWJhY2Fi
Y2VlYWMyNjhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1IEBACiAyMDE3LTAyLTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVuYW1lIE5vZGU6OmluRG9j
dW1lbnQoKSB0byBpc0Nvbm5lY3RlZCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjc3NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW5hbWUgTm9kZTo6aW5Eb2N1bWVudCgpIHRvIGlzQ29ubmVjdGVk
KCkgdG8gbWF0Y2ggdGhlIERPTSBzcGVjaWZpY2F0aW9uIG1vcmUgY2xvc2VseToKKyAgICAgICAg
LSBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2Nvbm5lY3RlZAorCisyMDE3LTAyLTAyICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZCBhdHRl
bXB0IHRvIGZpeCB0aGUgV2luZG93cyBidWlsZCBhZnRlciByMjExNTcxLgogCiAgICAgICAgICog
cGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA3
YzEyOWE4MmZmNzYxYjg1ZTkxMjI1ZTkyY2VlMzE0YjUzOGQ2YzIyLi4wZmVjMmVkMjAxMWE3Yzc2
YjE1NDNkNWZjYzU2ZWUwMjM4ZmFmN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjAg
QEAKIDIwMTctMDItMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAg
ICBSZW5hbWUgTm9kZTo6aW5Eb2N1bWVudCgpIHRvIGlzQ29ubmVjdGVkKCkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Nzc0MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBOb2RlOjppbkRvY3Vt
ZW50KCkgdG8gaXNDb25uZWN0ZWQoKSB0byBtYXRjaCB0aGUgRE9NIHNwZWNpZmljYXRpb24gbW9y
ZSBjbG9zZWx5OgorICAgICAgICAtIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jY29ubmVj
dGVkCisKKyAgICAgICAgKiBET00vRE9NTm9kZS5tbToKKyAgICAgICAgKC1bRE9NTm9kZSBpc0Nv
bm5lY3RlZF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dl
YkZyYW1lIHNlbGVjdE5TUmFuZ2U6b25FbGVtZW50Ol0pOgorCisyMDE3LTAyLTAyICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgW0NyYXNoXSBjb20uYXBwbGUuV2Vi
S2l0LldlYkNvbnRlbnQgYXQgV2ViS2l0OiBXZWJLaXQ6OldlYlBhZ2U6OmZyb21Db3JlUGFnZSgp
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc3MzgK
ICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMjI5OTkwPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggMTk3OGUzZTVlYzdhN2M1M2UzYzEz
MDhmYTFmNThlYjcyNmMxZjk2Yi4uOTgyZjBlMTZkMmQxY2RiYWU4MDFlNTRkZDM3YWMwMDMyMzA3
NDJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCkBAIC0yNjU4LDcgKzI2NTgsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmNsZWFyVGV4dE1h
cmtlck5vZGVzSW5Vc2UoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIC8vIENoZWNrIGVhY2ggbm9k
ZSB0byBzZWUgaWYgaXQncyBpbnNpZGUgdGhlIGRvY3VtZW50IGJlaW5nIGRlbGV0ZWQsIG9mIGlm
IGl0IG5vIGxvbmdlciBiZWxvbmdzIHRvIGEgZG9jdW1lbnQuCiAgICAgSGFzaFNldDxOb2RlKj4g
bm9kZXNUb0RlbGV0ZTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIG5vZGUgOiBtX3RleHRNYXJrZXJO
b2RlcykgewotICAgICAgICBpZiAoIW5vZGUtPmluRG9jdW1lbnQoKSB8fCAmKG5vZGUpLT5kb2N1
bWVudCgpID09IGRvY3VtZW50KQorICAgICAgICBpZiAoIW5vZGUtPmlzQ29ubmVjdGVkKCkgfHwg
Jihub2RlKS0+ZG9jdW1lbnQoKSA9PSBkb2N1bWVudCkKICAgICAgICAgICAgIG5vZGVzVG9EZWxl
dGUuYWRkKG5vZGUpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05vZGVDdXN0b20uY3BwCmluZGV4IGFhMjI2YmEwYzBiMmRjOTFhMjY3NzNiNzllNjI3MGI1ZjNj
NzZkMmMuLjMyNTQ4NzIwY2ViNTIzMGYxODIzM2ZlODZjZDdjMTcwZmYyMDg1ZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcApAQCAtNzQsNyArNzQsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZWFj
aGFibGVGcm9tRE9NKE5vZGUqIG5vZGUsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlm
ICghbm9kZS0+aW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKCFub2RlLT5pc0Nvbm5lY3RlZCgpKSB7
CiAgICAgICAgIGlmIChpczxFbGVtZW50Pigqbm9kZSkpIHsKICAgICAgICAgICAgIGF1dG8mIGVs
ZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmNwcAppbmRleCA2ODM5NmUxNDk2MTYzNDYyOTgxNjM2MWMyMThlZjAwYmQ1YmRiYmYy
Li5hNWQ3OWQzMjlhN2QyNWNhZGZkZjM3ZGMxZmQxMWM0N2I2M2ViNzkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC04MTYsNyArODE2LDcgQEAgc3RhdGljIHZvaWQgZGlz
cGF0Y2hDaGlsZEluc2VydGlvbkV2ZW50cyhOb2RlJiBjaGlsZCkKICAgICAgICAgYy0+ZGlzcGF0
Y2hTY29wZWRFdmVudChNdXRhdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTU5vZGVJ
bnNlcnRlZEV2ZW50LCB0cnVlLCBjLT5wYXJlbnROb2RlKCkpKTsKIAogICAgIC8vIGRpc3BhdGNo
IHRoZSBET01Ob2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQgZXZlbnQgdG8gYWxsIGRlc2NlbmRhbnRz
Ci0gICAgaWYgKGMtPmluRG9jdW1lbnQoKSAmJiBkb2N1bWVudC0+aGFzTGlzdGVuZXJUeXBlKERv
Y3VtZW50OjpET01OT0RFSU5TRVJURURJTlRPRE9DVU1FTlRfTElTVEVORVIpKSB7CisgICAgaWYg
KGMtPmlzQ29ubmVjdGVkKCkgJiYgZG9jdW1lbnQtPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6
RE9NTk9ERUlOU0VSVEVESU5UT0RPQ1VNRU5UX0xJU1RFTkVSKSkgewogICAgICAgICBmb3IgKDsg
YzsgYyA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKmMsICZjaGlsZCkpCiAgICAgICAgICAgICBjLT5k
aXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9N
Tm9kZUluc2VydGVkSW50b0RvY3VtZW50RXZlbnQsIGZhbHNlKSk7CiAgICAgfQpAQCAtODQyLDcg
Kzg0Miw3IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKE5vZGUmIGNo
aWxkKQogICAgICAgICBjLT5kaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9uRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuRE9NTm9kZVJlbW92ZWRFdmVudCwgdHJ1ZSwgYy0+cGFyZW50Tm9kZSgp
KSk7CiAKICAgICAvLyBkaXNwYXRjaCB0aGUgRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQgZXZl
bnQgdG8gYWxsIGRlc2NlbmRhbnRzCi0gICAgaWYgKGMtPmluRG9jdW1lbnQoKSAmJiBkb2N1bWVu
dC0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01OT0RFUkVNT1ZFREZST01ET0NVTUVOVF9M
SVNURU5FUikpIHsKKyAgICBpZiAoYy0+aXNDb25uZWN0ZWQoKSAmJiBkb2N1bWVudC0+aGFzTGlz
dGVuZXJUeXBlKERvY3VtZW50OjpET01OT0RFUkVNT1ZFREZST01ET0NVTUVOVF9MSVNURU5FUikp
IHsKICAgICAgICAgZm9yICg7IGM7IGMgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpjLCAmY2hpbGQp
KQogICAgICAgICAgICAgYy0+ZGlzcGF0Y2hTY29wZWRFdmVudChNdXRhdGlvbkV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRnJvbURvY3VtZW50RXZlbnQsIGZhbHNlKSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5j
cHAKaW5kZXggNzUzNjlkNjFkN2E2NDUzMzkwNDViODA1YjA3ODMyMDI3ZmMzZjBkMi4uNTE0Zjk4
NjFiMjY4M2FhMWNjNDhhZjBiNWMyOTMyMWYyYmI1N2E0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRp
YyB2b2lkIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudChDb250YWluZXJOb2Rl
JiBpbnNlcnRpb25Qb2ludCwKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBiZWVuIHJlbW92ZWQgZnJv
bSB0aGUgZG9jdW1lbnQgZHVyaW5nIHRoaXMgbG9vcCwgdGhlbgogICAgICAgICAvLyB3ZSBkb24n
dCB3YW50IHRvIHRlbGwgdGhlIHJlc3Qgb2Ygb3VyIGNoaWxkcmVuIHRoYXQgdGhleSd2ZSBiZWVu
CiAgICAgICAgIC8vIGluc2VydGVkIGludG8gdGhlIGRvY3VtZW50IGJlY2F1c2UgdGhleSBoYXZl
bid0LgotICAgICAgICBpZiAobm9kZS5pbkRvY3VtZW50KCkgJiYgY2hpbGQtPnBhcmVudE5vZGUo
KSA9PSAmbm9kZSkKKyAgICAgICAgaWYgKG5vZGUuaXNDb25uZWN0ZWQoKSAmJiBjaGlsZC0+cGFy
ZW50Tm9kZSgpID09ICZub2RlKQogICAgICAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b0Rv
Y3VtZW50KGluc2VydGlvblBvaW50LCAqY2hpbGQsIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25U
YXJnZXRzKTsKICAgICB9CiAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIHZvaWQgbm90aWZ5RGVz
Y2VuZGFudEluc2VydGVkSW50b0RvY3VtZW50KENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50
LAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoUmVmUHRyPFNoYWRvd1Jvb3Q+IHJvb3QgPSBk
b3duY2FzdDxFbGVtZW50Pihub2RlKS5zaGFkb3dSb290KCkpIHsKLSAgICAgICAgaWYgKG5vZGUu
aW5Eb2N1bWVudCgpICYmIHJvb3QtPmhvc3QoKSA9PSAmbm9kZSkKKyAgICAgICAgaWYgKG5vZGUu
aXNDb25uZWN0ZWQoKSAmJiByb290LT5ob3N0KCkgPT0gJm5vZGUpCiAgICAgICAgICAgICBub3Rp
ZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoaW5zZXJ0aW9uUG9pbnQsICpyb290LCBwb3N0SW5z
ZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cyk7CiAgICAgfQogfQpAQCAtNzEsNyArNzEsNyBAQCBz
dGF0aWMgdm9pZCBub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvVHJlZShDb250YWluZXJOb2Rl
JiBpbnNlcnRpb25Qb2ludCwgQ29udAogCiB2b2lkIG5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1
bWVudChDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCwgTm9kZSYgbm9kZSwgTm9kZVZlY3Rv
ciYgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMpCiB7Ci0gICAgQVNTRVJUKGluc2Vy
dGlvblBvaW50LmluRG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKGluc2VydGlvblBvaW50LmlzQ29u
bmVjdGVkKCkpOwogICAgIGlmIChub2RlLmluc2VydGVkSW50byhpbnNlcnRpb25Qb2ludCkgPT0g
Tm9kZTo6SW5zZXJ0aW9uU2hvdWxkQ2FsbEZpbmlzaGVkSW5zZXJ0aW5nU3VidHJlZSkKICAgICAg
ICAgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMuYXBwZW5kKG5vZGUpOwogICAgIGlm
IChpczxDb250YWluZXJOb2RlPihub2RlKSkKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBub3RpZnlO
b2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQsIE5v
ZGUmIG5vZGUsIE4KIHZvaWQgbm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9k
ZSYgaW5zZXJ0aW9uUG9pbnQsIENvbnRhaW5lck5vZGUmIG5vZGUsIE5vZGVWZWN0b3ImIHBvc3RJ
bnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzKQogewogICAgIE5vRXZlbnREaXNwYXRjaEFzc2Vy
dGlvbiBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7Ci0gICAgQVNTRVJUKCFpbnNlcnRpb25Qb2ludC5p
bkRvY3VtZW50KCkpOworICAgIEFTU0VSVCghaW5zZXJ0aW9uUG9pbnQuaXNDb25uZWN0ZWQoKSk7
CiAKICAgICBpZiAobm9kZS5pbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQpID09IE5vZGU6Oklu
c2VydGlvblNob3VsZENhbGxGaW5pc2hlZEluc2VydGluZ1N1YnRyZWUpCiAgICAgICAgIHBvc3RJ
bnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzLmFwcGVuZChub2RlKTsKQEAgLTk3LDcgKzk3LDcg
QEAgdm9pZCBub3RpZnlDaGlsZE5vZGVJbnNlcnRlZChDb250YWluZXJOb2RlJiBpbnNlcnRpb25Q
b2ludCwgTm9kZSYgbm9kZSwgTm9kZVZlY3QKICAgICBSZWY8RG9jdW1lbnQ+IHByb3RlY3REb2N1
bWVudChub2RlLmRvY3VtZW50KCkpOwogICAgIFJlZjxOb2RlPiBwcm90ZWN0Tm9kZShub2RlKTsK
IAotICAgIGlmIChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkpCisgICAgaWYgKGluc2VydGlv
blBvaW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1
bWVudChpbnNlcnRpb25Qb2ludCwgbm9kZSwgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdl
dHMpOwogICAgIGVsc2UgaWYgKGlzPENvbnRhaW5lck5vZGU+KG5vZGUpKQogICAgICAgICBub3Rp
ZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZShpbnNlcnRpb25Qb2ludCwgZG93bmNhc3Q8Q29udGFpbmVy
Tm9kZT4obm9kZSksIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzKTsKQEAgLTEwNSw3
ICsxMDUsNyBAQCB2b2lkIG5vdGlmeUNoaWxkTm9kZUluc2VydGVkKENvbnRhaW5lck5vZGUmIGlu
c2VydGlvblBvaW50LCBOb2RlJiBub2RlLCBOb2RlVmVjdAogCiB2b2lkIG5vdGlmeU5vZGVSZW1v
dmVkRnJvbURvY3VtZW50KENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50LCBOb2RlJiBub2Rl
KQogewotICAgIEFTU0VSVChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkpOworICAgIEFTU0VS
VChpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgpKTsKICAgICBub2RlLnJlbW92ZWRGcm9tKGlu
c2VydGlvblBvaW50KTsKIAogICAgIGlmICghaXM8Q29udGFpbmVyTm9kZT4obm9kZSkpCkBAIC0x
MTUsNyArMTE1LDcgQEAgdm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChDb250YWlu
ZXJOb2RlJiBpbnNlcnRpb25Qb2ludCwgTm9kZSYgbm9kZSkKICAgICAgICAgLy8gSWYgd2UgaGF2
ZSBiZWVuIGFkZGVkIHRvIHRoZSBkb2N1bWVudCBkdXJpbmcgdGhpcyBsb29wLCB0aGVuIHdlCiAg
ICAgICAgIC8vIGRvbid0IHdhbnQgdG8gdGVsbCB0aGUgcmVzdCBvZiBvdXIgY2hpbGRyZW4gdGhh
dCB0aGV5J3ZlIGJlZW4KICAgICAgICAgLy8gcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudCBiZWNh
dXNlIHRoZXkgaGF2ZW4ndC4KLSAgICAgICAgaWYgKCFub2RlLmluRG9jdW1lbnQoKSAmJiBjaGls
ZC0+cGFyZW50Tm9kZSgpID09ICZub2RlKQorICAgICAgICBpZiAoIW5vZGUuaXNDb25uZWN0ZWQo
KSAmJiBjaGlsZC0+cGFyZW50Tm9kZSgpID09ICZub2RlKQogICAgICAgICAgICAgbm90aWZ5Tm9k
ZVJlbW92ZWRGcm9tRG9jdW1lbnQoaW5zZXJ0aW9uUG9pbnQsICpjaGlsZC5nZXQoKSk7CiAgICAg
fQogCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVu
dChDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCwgTm9kZSYgbm9kZSkKICAgICAgICAgbm9k
ZS5kb2N1bWVudCgpLnNldENTU1RhcmdldChudWxscHRyKTsKIAogICAgIGlmIChSZWZQdHI8U2hh
ZG93Um9vdD4gcm9vdCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpLnNoYWRvd1Jvb3QoKSkgewot
ICAgICAgICBpZiAoIW5vZGUuaW5Eb2N1bWVudCgpICYmIHJvb3QtPmhvc3QoKSA9PSAmbm9kZSkK
KyAgICAgICAgaWYgKCFub2RlLmlzQ29ubmVjdGVkKCkgJiYgcm9vdC0+aG9zdCgpID09ICZub2Rl
KQogICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoaW5zZXJ0aW9uUG9p
bnQsICpyb290LmdldCgpKTsKICAgICB9CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBub3Rp
ZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCwg
Tm9kZSYgbm9kZSkKIHZvaWQgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShDb250YWluZXJOb2Rl
JiBpbnNlcnRpb25Qb2ludCwgQ29udGFpbmVyTm9kZSYgbm9kZSkKIHsKICAgICBOb0V2ZW50RGlz
cGF0Y2hBc3NlcnRpb24gYXNzZXJ0Tm9FdmVudERpc3BhdGNoOwotICAgIEFTU0VSVCghaW5zZXJ0
aW9uUG9pbnQuaW5Eb2N1bWVudCgpKTsKKyAgICBBU1NFUlQoIWluc2VydGlvblBvaW50LmlzQ29u
bmVjdGVkKCkpOwogCiAgICAgbm9kZS5yZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiAKQEAg
LTE1Miw3ICsxNTIsNyBAQCB2b2lkIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVy
Tm9kZSYgaW5zZXJ0aW9uUG9pbnQsIENvbnRhaW5lck5vZGUmIG5vZAogCiB2b2lkIG5vdGlmeUNo
aWxkTm9kZVJlbW92ZWQoQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQsIE5vZGUmIGNoaWxk
KQogewotICAgIGlmICghY2hpbGQuaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKCFjaGlsZC5pc0Nv
bm5lY3RlZCgpKSB7CiAgICAgICAgIGlmIChpczxDb250YWluZXJOb2RlPihjaGlsZCkpCiAgICAg
ICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKGluc2VydGlvblBvaW50LCBkb3duY2Fz
dDxDb250YWluZXJOb2RlPihjaGlsZCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcAppbmRleCBhMWQxYTEx
NWU1ZDhiMWZjOTMzMjBkYTVjYzgzOTAxY2VkYzRhY2ZlLi5hN2RhYjk3YWQ1MGM1MDM0MTlhOTQw
NjI1MmZiOTE2OTNiZmZkZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RWxlbWVudFJlYWN0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21F
bGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblF1ZXVlOjplbnF1ZXVlRWxlbWVudFVwZ3JhZGUoRWxlbWVudCYgZWxlbWVu
dCkKIAogdm9pZCBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5xdWV1ZUVsZW1lbnRVcGdy
YWRlSWZEZWZpbmVkKEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgQVNTRVJUKGVsZW1lbnQuaW5E
b2N1bWVudCgpKTsKKyAgICBBU1NFUlQoZWxlbWVudC5pc0Nvbm5lY3RlZCgpKTsKICAgICBBU1NF
UlQoZWxlbWVudC5pc0N1c3RvbUVsZW1lbnRVcGdyYWRlQ2FuZGlkYXRlKCkpOwogICAgIGF1dG8q
IHdpbmRvdyA9IGVsZW1lbnQuZG9jdW1lbnQoKS5kb21XaW5kb3coKTsKICAgICBpZiAoIXdpbmRv
dykKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjpl
bnF1ZXVlQXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrSWZOZWVkZWQoRWxlbWVudAogdm9pZCBDdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5xdWV1ZVBvc3RVcGdyYWRlUmVhY3Rpb25zKEVsZW1l
bnQmIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQuaXNDdXN0b21FbGVtZW50VXBncmFk
ZUNhbmRpZGF0ZSgpKTsKLSAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlcygpICYmICFlbGVt
ZW50LmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlcygpICYmICFl
bGVtZW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8qIHF1ZXVl
ID0gZWxlbWVudC5yZWFjdGlvblF1ZXVlKCk7CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBDdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5xdWV1ZVBvc3RVcGdyYWRlUmVhY3Rpb25zKEVsZW1l
bnQmIGVsZW1lbnQpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoZWxlbWVudC5pbkRvY3Vt
ZW50KCkgJiYgcXVldWUtPm1faW50ZXJmYWNlLT5oYXNDb25uZWN0ZWRDYWxsYmFjaygpKQorICAg
IGlmIChlbGVtZW50LmlzQ29ubmVjdGVkKCkgJiYgcXVldWUtPm1faW50ZXJmYWNlLT5oYXNDb25u
ZWN0ZWRDYWxsYmFjaygpKQogICAgICAgICBxdWV1ZS0+bV9pdGVtcy5hcHBlbmQoe0N1c3RvbUVs
ZW1lbnRSZWFjdGlvblF1ZXVlSXRlbTo6VHlwZTo6Q29ubmVjdGVkfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggOWVjYjM1MWQzY2E0NzczYWFiZWNjODdhNTQ0ZmI2
ODcwNjM2NzlhMC4uYWY2OWZhMGQwYzc0MjkwMGI1YmQwMzVlOWIwYWVhZmRlMDY5Y2YxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIERh
dGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKEVsZW1lbnQqIGVsZW1lbnQsIGludCB4LCBpbnQgeSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2FjaGVkSW1hZ2UqIGltYWdlID0gbnVsbHB0cjsKLSAg
ICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkgJiYgIWVsZW1lbnQtPmluRG9jdW1l
bnQoKSkKKyAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkgJiYgIWVsZW1lbnQt
PmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIGltYWdlID0gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVu
dD4oKmVsZW1lbnQpLmNhY2hlZEltYWdlKCk7CiAKICAgICBtX2RyYWdMb2NhdGlvbiA9IEludFBv
aW50KHgsIHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMGFlNzBmZTZjMWMxNzYyMTdi
Njg2ZWFkYzkxZTZlZTE0NDEyNzU4Yy4uYjViN2UzMzBkM2E2MGM5OTM1ZTFlN2U3MmFlMzJhOWFl
Nzc4YTI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01NTc5LDcgKzU1NzksNyBAQCB2
b2lkIERvY3VtZW50OjpyZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVu
dCwgRnVsbFNjcmVlbkNoZWNrVHlwZQogICAgICAgICAvLyBub2RlIGRvY3VtZW50OgogCiAgICAg
ICAgIC8vIFRoZSBjb250ZXh0IG9iamVjdCBpcyBub3QgaW4gYSBkb2N1bWVudC4KLSAgICAgICAg
aWYgKCFlbGVtZW50LT5pbkRvY3VtZW50KCkpCisgICAgICAgIGlmICghZWxlbWVudC0+aXNDb25u
ZWN0ZWQoKSkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8vIFRoZSBjb250ZXh0IG9i
amVjdCdzIG5vZGUgZG9jdW1lbnQsIG9yIGFuIGFuY2VzdG9yIGJyb3dzaW5nIGNvbnRleHQncyBk
b2N1bWVudCBkb2VzIG5vdCBoYXZlCkBAIC01NzM4LDcgKzU3MzgsNyBAQCB2b2lkIERvY3VtZW50
Ojp3ZWJraXRFeGl0RnVsbHNjcmVlbigpCiAgICAgICAgIC8vICAgIElmIGRvYydzIGZ1bGxzY3Jl
ZW4gZWxlbWVudCBzdGFjayBpcyBub24tZW1wdHkgYW5kIHRoZSBlbGVtZW50IG5vdyBhdCB0aGUg
dG9wIGlzIGVpdGhlcgogICAgICAgICAvLyAgICBub3QgaW4gYSBkb2N1bWVudCBvciBpdHMgbm9k
ZSBkb2N1bWVudCBpcyBub3QgZG9jLCByZXBlYXQgdGhpcyBzdWJzdGVwLgogICAgICAgICBuZXdU
b3AgPSBjdXJyZW50RG9jLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpOwotICAgICAgICBpZiAo
bmV3VG9wICYmICghbmV3VG9wLT5pbkRvY3VtZW50KCkgfHwgJm5ld1RvcC0+ZG9jdW1lbnQoKSAh
PSBjdXJyZW50RG9jKSkKKyAgICAgICAgaWYgKG5ld1RvcCAmJiAoIW5ld1RvcC0+aXNDb25uZWN0
ZWQoKSB8fCAmbmV3VG9wLT5kb2N1bWVudCgpICE9IGN1cnJlbnREb2MpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgLy8gMi4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYW4gZXZlbnQg
bmFtZWQgZnVsbHNjcmVlbmNoYW5nZSB3aXRoIGl0cyBidWJibGVzIGF0dHJpYnV0ZSBzZXQgdG8g
dHJ1ZQpAQCAtNTkzNyw3ICs1OTM3LDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlzcGF0Y2hGdWxsU2Ny
ZWVuQ2hhbmdlT3JFcnJvckV2ZW50KERlcXVlPFJlZlB0cjxOb2RlPj4mIHF1ZXVlLAogCiAgICAg
ICAgIC8vIElmIHRoZSBlbGVtZW50IHdhcyByZW1vdmVkIGZyb20gb3VyIHRyZWUsIGFsc28gbWVz
c2FnZSB0aGUgZG9jdW1lbnRFbGVtZW50LiBTaW5jZSB3ZSBtYXkKICAgICAgICAgLy8gaGF2ZSBh
IGRvY3VtZW50IGhpZXJhcmNoeSwgY2hlY2sgdGhhdCBub2RlIGlzbid0IGluIGFub3RoZXIgZG9j
dW1lbnQuCi0gICAgICAgIGlmICghbm9kZS0+aW5Eb2N1bWVudCgpKQorICAgICAgICBpZiAoIW5v
ZGUtPmlzQ29ubmVjdGVkKCkpCiAgICAgICAgICAgICBxdWV1ZS5hcHBlbmQoZG9jdW1lbnRFbGVt
ZW50KCkpOwogCiAjaWYgRU5BQkxFKFZJREVPKQpAQCAtNjk2MSw3ICs2OTYxLDcgQEAgRE9NU2Vs
ZWN0aW9uKiBEb2N1bWVudDo6Z2V0U2VsZWN0aW9uKCkKIAogdm9pZCBEb2N1bWVudDo6ZGlkSW5z
ZXJ0SW5Eb2N1bWVudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKIHsKLSAgICBB
U1NFUlQoc2hhZG93Um9vdC5pbkRvY3VtZW50KCkpOworICAgIEFTU0VSVChzaGFkb3dSb290Lmlz
Q29ubmVjdGVkKCkpOwogICAgIEFTU0VSVCghbV9pbkRvY3VtZW50U2hhZG93Um9vdHMuY29udGFp
bnMoJnNoYWRvd1Jvb3QpKTsKICAgICBtX2luRG9jdW1lbnRTaGFkb3dSb290cy5hZGQoJnNoYWRv
d1Jvb3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDg1ZTBiMjZmMWMzZTc4YjJjYmJj
Njg1YjZhZDE5ZjI1ZDBkOWJlYTAuLjlkYWY5YmUyMjY3YWZlOWMxZmFlYTUyMDA2MmYwMDM0MjNl
YzZjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTUwOCw3ICs1MDgsNyBAQCBWZWN0b3I8
U3RyaW5nPiBFbGVtZW50OjpnZXRBdHRyaWJ1dGVOYW1lcygpIGNvbnN0CiAKIGJvb2wgRWxlbWVu
dDo6aXNGb2N1c2FibGUoKSBjb25zdAogewotICAgIGlmICghaW5Eb2N1bWVudCgpIHx8ICFzdXBw
b3J0c0ZvY3VzKCkpCisgICAgaWYgKCFpc0Nvbm5lY3RlZCgpIHx8ICFzdXBwb3J0c0ZvY3VzKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcmVuZGVyZXIoKSkgewpAQCAtMTUx
MCw3ICsxNTEwLDcgQEAgdm9pZCBFbGVtZW50OjpzdHJpcFNjcmlwdGluZ0F0dHJpYnV0ZXMoVmVj
dG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvcikgY29uc3QKIAogdm9pZCBFbGVtZW50Ojpw
YXJzZXJTZXRBdHRyaWJ1dGVzKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVWZWN0
b3IpCiB7Ci0gICAgQVNTRVJUKCFpbkRvY3VtZW50KCkpOworICAgIEFTU0VSVCghaXNDb25uZWN0
ZWQoKSk7CiAgICAgQVNTRVJUKCFwYXJlbnROb2RlKCkpOwogICAgIEFTU0VSVCghbV9lbGVtZW50
RGF0YSk7CiAKQEAgLTE2MDUsMTEgKzE2MDUsMTEgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb24K
IAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBFbGVtZW50OjppbnNlcnRlZElu
dG8oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7Ci0gICAgYm9vbCB3YXNJbkRvY3Vt
ZW50ID0gaW5Eb2N1bWVudCgpOwotICAgIC8vIG5lZWQgdG8gZG8gc3VwZXJjbGFzcyBwcm9jZXNz
aW5nIGZpcnN0IHNvIGluRG9jdW1lbnQoKSBpcyB0cnVlCisgICAgYm9vbCB3YXNJbkRvY3VtZW50
ID0gaXNDb25uZWN0ZWQoKTsKKyAgICAvLyBuZWVkIHRvIGRvIHN1cGVyY2xhc3MgcHJvY2Vzc2lu
ZyBmaXJzdCBzbyBpc0Nvbm5lY3RlZCgpIGlzIHRydWUKICAgICAvLyBieSB0aGUgdGltZSB3ZSBy
ZWFjaCB1cGRhdGVJZAogICAgIENvbnRhaW5lck5vZGU6Omluc2VydGVkSW50byhpbnNlcnRpb25Q
b2ludCk7Ci0gICAgQVNTRVJUKCF3YXNJbkRvY3VtZW50IHx8IGluRG9jdW1lbnQoKSk7CisgICAg
QVNTRVJUKCF3YXNJbkRvY3VtZW50IHx8IGlzQ29ubmVjdGVkKCkpOwogCiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQogICAgIGlmIChjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkgJiYgcGFy
ZW50RWxlbWVudCgpICYmICFwYXJlbnRFbGVtZW50KCktPmNvbnRhaW5zRnVsbFNjcmVlbkVsZW1l
bnQoKSkKQEAgLTE2MjgsNyArMTYyOCw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJl
cXVlc3QgRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIGluc2VydGlvCiAgICAg
Ly8gVGhpcyBlbGVtZW50IGlzIG5ldyB0byB0aGUgc2hhZG93IHRyZWUgKGFuZCBpdHMgdHJlZSBz
Y29wZSkgb25seSBpZiB0aGUgcGFyZW50IGludG8gd2hpY2ggdGhpcyBlbGVtZW50CiAgICAgLy8g
b3IgaXRzIGFuY2VzdG9yIGlzIGluc2VydGVkIGJlbG9uZ3MgdG8gdGhlIHNhbWUgdHJlZSBzY29w
ZSBhcyB0aGlzIGVsZW1lbnQncy4KICAgICBUcmVlU2NvcGUqIG5ld1Njb3BlID0gJmluc2VydGlv
blBvaW50LnRyZWVTY29wZSgpOwotICAgIGJvb2wgYmVjb21lQ29ubmVjdGVkID0gIXdhc0luRG9j
dW1lbnQgJiYgaW5Eb2N1bWVudCgpOworICAgIGJvb2wgYmVjb21lQ29ubmVjdGVkID0gIXdhc0lu
RG9jdW1lbnQgJiYgaXNDb25uZWN0ZWQoKTsKICAgICBIVE1MRG9jdW1lbnQqIG5ld0RvY3VtZW50
ID0gYmVjb21lQ29ubmVjdGVkICYmIGlzPEhUTUxEb2N1bWVudD4obmV3U2NvcGUtPmRvY3VtZW50
U2NvcGUoKSkgPyAmZG93bmNhc3Q8SFRNTERvY3VtZW50PihuZXdTY29wZS0+ZG9jdW1lbnRTY29w
ZSgpKSA6IG51bGxwdHI7CiAgICAgaWYgKG5ld1Njb3BlICE9ICZ0cmVlU2NvcGUoKSkKICAgICAg
ICAgbmV3U2NvcGUgPSBudWxscHRyOwpAQCAtMTY3OSw3ICsxNjc5LDcgQEAgdm9pZCBFbGVtZW50
OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIAogICAgIGlmIChp
bnNlcnRpb25Qb2ludC5pc0luVHJlZVNjb3BlKCkpIHsKICAgICAgICAgVHJlZVNjb3BlKiBvbGRT
Y29wZSA9ICZpbnNlcnRpb25Qb2ludC50cmVlU2NvcGUoKTsKLSAgICAgICAgYm9vbCBiZWNvbWVE
aXNjb25uZWN0ZWQgPSBpbkRvY3VtZW50KCk7CisgICAgICAgIGJvb2wgYmVjb21lRGlzY29ubmVj
dGVkID0gaXNDb25uZWN0ZWQoKTsKICAgICAgICAgSFRNTERvY3VtZW50KiBvbGREb2N1bWVudCA9
IGJlY29tZURpc2Nvbm5lY3RlZCAmJiBpczxIVE1MRG9jdW1lbnQ+KG9sZFNjb3BlLT5kb2N1bWVu
dFNjb3BlKCkpID8gJmRvd25jYXN0PEhUTUxEb2N1bWVudD4ob2xkU2NvcGUtPmRvY3VtZW50U2Nv
cGUoKSkgOiBudWxscHRyOwogCiAgICAgICAgIC8vIENvbnRhaW5lck5vZGU6OnJlbW92ZUJldHdl
ZW4gYWx3YXlzIHNldHMgdGhlIHJlbW92ZWQgY2hpZCdzIHRyZWUgc2NvcGUgdG8gRG9jdW1lbnQn
cyBidXQgSW5UcmVlU2NvcGUgZmxhZyBpcyB1bnNldCBpbiBOb2RlOjpyZW1vdmVkRnJvbS4KQEAg
LTIzNDMsNyArMjM0Myw3IEBAIENTU1N0eWxlRGVjbGFyYXRpb24qIEVsZW1lbnQ6OmNzc29tU3R5
bGUoKQogCiB2b2lkIEVsZW1lbnQ6OmZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9u
LCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAgaWYgKCFpbkRvY3VtZW50KCkpCisg
ICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZG9jdW1l
bnQoKS5mb2N1c2VkRWxlbWVudCgpID09IHRoaXMpIHsKQEAgLTI2NDYsNyArMjY0Niw3IEBAIGNv
bnN0IFJlbmRlclN0eWxlKiBFbGVtZW50OjpleGlzdGluZ0NvbXB1dGVkU3R5bGUoKQogCiBjb25z
dCBSZW5kZXJTdHlsZSYgRWxlbWVudDo6cmVzb2x2ZUNvbXB1dGVkU3R5bGUoKQogewotICAgIEFT
U0VSVChpbkRvY3VtZW50KCkpOworICAgIEFTU0VSVChpc0Nvbm5lY3RlZCgpKTsKICAgICBBU1NF
UlQoIWV4aXN0aW5nQ29tcHV0ZWRTdHlsZSgpKTsKIAogICAgIERlcXVlPEVsZW1lbnQqLCAzMj4g
ZWxlbWVudHNSZXF1aXJpbmdDb21wdXRlZFN0eWxlKHsgdGhpcyB9KTsKQEAgLTI2NzUsNyArMjY3
NSw3IEBAIGNvbnN0IFJlbmRlclN0eWxlJiBFbGVtZW50OjpyZXNvbHZlQ29tcHV0ZWRTdHlsZSgp
CiAKIGNvbnN0IFJlbmRlclN0eWxlKiBFbGVtZW50Ojpjb21wdXRlZFN0eWxlKFBzZXVkb0lkIHBz
ZXVkb0VsZW1lbnRTcGVjaWZpZXIpCiB7Ci0gICAgaWYgKCFpbkRvY3VtZW50KCkpCisgICAgaWYg
KCFpc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChQc2V1
ZG9FbGVtZW50KiBwc2V1ZG9FbGVtZW50ID0gYmVmb3JlT3JBZnRlclBzZXVkb0VsZW1lbnQoKnRo
aXMsIHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpKQpAQCAtMzIwMiw3ICszMjAyLDcgQEAgaW5saW5l
IHZvaWQgRWxlbWVudDo6dXBkYXRlTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG9sZE5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYKIAogICAgIHVwZGF0ZU5hbWVGb3JUcmVlU2NvcGUodHJlZVNjb3Bl
KCksIG9sZE5hbWUsIG5ld05hbWUpOwogCi0gICAgaWYgKCFpbkRvY3VtZW50KCkpCisgICAgaWYg
KCFpc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFpczxIVE1MRG9jdW1l
bnQ+KGRvY3VtZW50KCkpKQogICAgICAgICByZXR1cm47CkBAIC0zMjUzLDcgKzMyNTMsNyBAQCBp
bmxpbmUgdm9pZCBFbGVtZW50Ojp1cGRhdGVJZChjb25zdCBBdG9taWNTdHJpbmcmIG9sZElkLCBj
b25zdCBBdG9taWNTdHJpbmcmIG5ldwogCiAgICAgdXBkYXRlSWRGb3JUcmVlU2NvcGUodHJlZVNj
b3BlKCksIG9sZElkLCBuZXdJZCwgbm90aWZ5T2JzZXJ2ZXJzKTsKIAotICAgIGlmICghaW5Eb2N1
bWVudCgpKQorICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlm
ICghaXM8SFRNTERvY3VtZW50Pihkb2N1bWVudCgpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzI3
Myw3ICszMjczLDcgQEAgdm9pZCBFbGVtZW50Ojp1cGRhdGVJZEZvclRyZWVTY29wZShUcmVlU2Nv
cGUmIHNjb3BlLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZElkLAogCiB2b2lkIEVsZW1lbnQ6OnVw
ZGF0ZUlkRm9yRG9jdW1lbnQoSFRNTERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBvbGRJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdJZCwgSFRNTERvY3VtZW50TmFtZWRJ
dGVtTWFwc1VwZGF0aW5nQ29uZGl0aW9uIGNvbmRpdGlvbikKIHsKLSAgICBBU1NFUlQoaW5Eb2N1
bWVudCgpKTsKKyAgICBBU1NFUlQoaXNDb25uZWN0ZWQoKSk7CiAgICAgQVNTRVJUKG9sZElkICE9
IG5ld0lkKTsKIAogICAgIGlmIChpc0luU2hhZG93VHJlZSgpKQpAQCAtMzMwMCw3ICszMzAwLDcg
QEAgdm9pZCBFbGVtZW50Ojp1cGRhdGVMYWJlbChUcmVlU2NvcGUmIHNjb3BlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZEZvckF0dHJpYnV0ZVYKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShsYWJl
bFRhZykpOwogCi0gICAgaWYgKCFpbkRvY3VtZW50KCkpCisgICAgaWYgKCFpc0Nvbm5lY3RlZCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAob2xkRm9yQXR0cmlidXRlVmFsdWUgPT0gbmV3
Rm9yQXR0cmlidXRlVmFsdWUpCkBAIC0zNTEwLDcgKzM1MTAsNyBAQCB2b2lkIEVsZW1lbnQ6OmNs
b25lQXR0cmlidXRlc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmIG90aGVyKQogCiAgICAgLy8g
V2UgY2FuJ3QgdXBkYXRlIHdpbmRvdyBhbmQgZG9jdW1lbnQncyBuYW1lZCBpdGVtIG1hcHMgc2lu
Y2UgdGhlIHByZXNlbmNlIG9mIGltYWdlIGFuZCBvYmplY3QgZWxlbWVudHMgZGVwZW5kIG9uIG90
aGVyIGF0dHJpYnV0ZXMgYW5kIGNoaWxkcmVuLgogICAgIC8vIEZvcnR1bmF0ZWx5LCB0aG9zZSBu
YW1lZCBpdGVtIG1hcHMgYXJlIG9ubHkgdXBkYXRlZCB3aGVuIHRoaXMgZWxlbWVudCBpcyBpbiB0
aGUgZG9jdW1lbnQsIHdoaWNoIHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZS4KLSAgICBBU1NFUlQo
IWluRG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKCFpc0Nvbm5lY3RlZCgpKTsKIAogICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgb2xkSUQgPSBnZXRJZEF0dHJpYnV0ZSgpOwogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmV3SUQgPSBvdGhlci5nZXRJZEF0dHJpYnV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
aW5kZXggOTUzNDE2YjFlZWQ0Nzg5NzBjOGRlMmI5NmRiZjg4YzVhYTVlNzliZS4uNzljMGFhMDAx
ZTViYzY1NmRjZjFkZjM1ZmI0ZDk3MmRhZjY5ODk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC03
MDEsNyArNzAxLDcgQEAgaW5saW5lIEVsZW1lbnQqIE5vZGU6OnBhcmVudEVsZW1lbnQoKSBjb25z
dAogCiBpbmxpbmUgY29uc3QgRWxlbWVudCogRWxlbWVudDo6cm9vdEVsZW1lbnQoKSBjb25zdAog
ewotICAgIGlmIChpbkRvY3VtZW50KCkpCisgICAgaWYgKGlzQ29ubmVjdGVkKCkpCiAgICAgICAg
IHJldHVybiBkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpOwogCiAgICAgY29uc3QgRWxlbWVu
dCogaGlnaGVzdCA9IHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQ
YXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCmluZGV4IDc3NzEyODFh
Yjk0N2EzMTRmNjQwYTA5YWJkM2U0NzhiNzIyNjIzZGYuLjMxNjFlYWEzNzYzNTJkMDE3ZDljYjIy
ZjE5YzA1YTZkNWE2MzUxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBh
dGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCkBAIC0yOTAsNyAr
MjkwLDcgQEAgUmVsYXRlZE5vZGVSZXRhcmdldGVyOjpSZWxhdGVkTm9kZVJldGFyZ2V0ZXIoTm9k
ZSYgcmVsYXRlZE5vZGUsIE5vZGUmIHRhcmdldCkKIHsKICAgICBhdXRvJiB0YXJnZXRUcmVlU2Nv
cGUgPSB0YXJnZXQudHJlZVNjb3BlKCk7CiAgICAgVHJlZVNjb3BlKiBjdXJyZW50VHJlZVNjb3Bl
ID0gJm1fcmVsYXRlZE5vZGUudHJlZVNjb3BlKCk7Ci0gICAgaWYgKExJS0VMWShjdXJyZW50VHJl
ZVNjb3BlID09ICZ0YXJnZXRUcmVlU2NvcGUgJiYgdGFyZ2V0LmluRG9jdW1lbnQoKSAmJiBtX3Jl
bGF0ZWROb2RlLmluRG9jdW1lbnQoKSkpCisgICAgaWYgKExJS0VMWShjdXJyZW50VHJlZVNjb3Bl
ID09ICZ0YXJnZXRUcmVlU2NvcGUgJiYgdGFyZ2V0LmlzQ29ubmVjdGVkKCkgJiYgbV9yZWxhdGVk
Tm9kZS5pc0Nvbm5lY3RlZCgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCZjdXJyZW50
VHJlZVNjb3BlLT5kb2N1bWVudFNjb3BlKCkgIT0gJnRhcmdldFRyZWVTY29wZS5kb2N1bWVudFNj
b3BlKCkpIHsKQEAgLTI5OCw3ICsyOTgsNyBAQCBSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OlJlbGF0
ZWROb2RlUmV0YXJnZXRlcihOb2RlJiByZWxhdGVkTm9kZSwgTm9kZSYgdGFyZ2V0KQogICAgICAg
ICBtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgaWYgKHJlbGF0ZWROb2RlLmluRG9jdW1lbnQoKSAhPSB0YXJnZXQuaW5Eb2N1bWVu
dCgpKSB7CisgICAgaWYgKHJlbGF0ZWROb2RlLmlzQ29ubmVjdGVkKCkgIT0gdGFyZ2V0LmlzQ29u
bmVjdGVkKCkpIHsKICAgICAgICAgbV9oYXNEaWZmZXJlbnRUcmVlUm9vdCA9IHRydWU7CiAgICAg
ICAgIG1fcmV0YXJnZXRlZFJlbGF0ZWROb2RlID0gbW92ZU91dE9mQWxsU2hhZG93Um9vdHMocmVs
YXRlZE5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC0zMjMsNyArMzIzLDcgQEAgUmVsYXRlZE5v
ZGVSZXRhcmdldGVyOjpSZWxhdGVkTm9kZVJldGFyZ2V0ZXIoTm9kZSYgcmVsYXRlZE5vZGUsIE5v
ZGUmIHRhcmdldCkKICAgICB9CiAKICAgICBib29sIGxvd2VzdENvbW1vbkFuY2VzdG9ySXNEb2N1
bWVudFNjb3BlID0gaSArIDEgPT0gbV9hbmNlc3RvclRyZWVTY29wZXMuc2l6ZSgpOwotICAgIGlm
IChsb3dlc3RDb21tb25BbmNlc3RvcklzRG9jdW1lbnRTY29wZSAmJiAhcmVsYXRlZE5vZGUuaW5E
b2N1bWVudCgpICYmICF0YXJnZXQuaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKGxvd2VzdENvbW1v
bkFuY2VzdG9ySXNEb2N1bWVudFNjb3BlICYmICFyZWxhdGVkTm9kZS5pc0Nvbm5lY3RlZCgpICYm
ICF0YXJnZXQuaXNDb25uZWN0ZWQoKSkgewogICAgICAgICBOb2RlJiByZWxhdGVkTm9kZUFuY2Vz
dG9ySW5Eb2N1bWVudFNjb3BlID0gaSA/ICpkb3duY2FzdDxTaGFkb3dSb290PihtX2FuY2VzdG9y
VHJlZVNjb3Blc1tpIC0gMV0tPnJvb3ROb2RlKCkpLnNoYWRvd0hvc3QoKSA6IHJlbGF0ZWROb2Rl
OwogICAgICAgICBOb2RlJiB0YXJnZXRBbmNlc3RvckluRG9jdW1lbnRTY29wZSA9IGogPyAqZG93
bmNhc3Q8U2hhZG93Um9vdD4odGFyZ2V0VHJlZVNjb3BlQW5jZXN0b3JzW2ogLSAxXS0+cm9vdE5v
ZGUoKSkuc2hhZG93SG9zdCgpIDogdGFyZ2V0OwogICAgICAgICBpZiAoJnRhcmdldEFuY2VzdG9y
SW5Eb2N1bWVudFNjb3BlLnJvb3ROb2RlKCkgIT0gJnJlbGF0ZWROb2RlQW5jZXN0b3JJbkRvY3Vt
ZW50U2NvcGUucm9vdE5vZGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lu
bGluZVN0eWxlU2hlZXRPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVT
aGVldE93bmVyLmNwcAppbmRleCBkYTY4ZmIxOTcyYzJhMGJhMDk1MGQzZDM4NmFlOTBkZWNkZjI5
ZDhiLi5hMjUyNjMyNDgzZTczYmQ2NjdmODA5YWI0MjI1MzkxYTNhNjU1YTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcApAQCAtMTE2LDE0ICsxMTYs
MTQgQEAgdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNoaWxkcmVuQ2hhbmdlZChFbGVtZW50
JiBlbGVtZW50KQogewogICAgIGlmIChtX2lzUGFyc2luZ0NoaWxkcmVuKQogICAgICAgICByZXR1
cm47Ci0gICAgaWYgKCFlbGVtZW50LmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIWVsZW1lbnQuaXND
b25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGNyZWF0ZVNoZWV0RnJvbVRleHRDb250
ZW50cyhlbGVtZW50KTsKIH0KIAogdm9pZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmZpbmlzaFBh
cnNpbmdDaGlsZHJlbihFbGVtZW50JiBlbGVtZW50KQogewotICAgIGlmIChlbGVtZW50LmluRG9j
dW1lbnQoKSkKKyAgICBpZiAoZWxlbWVudC5pc0Nvbm5lY3RlZCgpKQogICAgICAgICBjcmVhdGVT
aGVldEZyb21UZXh0Q29udGVudHMoZWxlbWVudCk7CiAgICAgbV9pc1BhcnNpbmdDaGlsZHJlbiA9
IGZhbHNlOwogfQpAQCAtMTUzLDcgKzE1Myw3IEBAIGlubGluZSBib29sIGlzVmFsaWRDU1NDb250
ZW50VHlwZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpCiAKIHZv
aWQgSW5saW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgQVNTRVJUKGVsZW1lbnQuaW5Eb2N1bWVudCgpKTsK
KyAgICBBU1NFUlQoZWxlbWVudC5pc0Nvbm5lY3RlZCgpKTsKICAgICBEb2N1bWVudCYgZG9jdW1l
bnQgPSBlbGVtZW50LmRvY3VtZW50KCk7CiAgICAgaWYgKG1fc2hlZXQpIHsKICAgICAgICAgaWYg
KG1fc2hlZXQtPmlzTG9hZGluZygpICYmIG1fc3R5bGVTY29wZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVO
b2RlTGlzdC5jcHAKaW5kZXggMDEzNWVhY2NhZGZlN2Y1OTU2NGZhNjk2NTIwZTE0MjliOTYwZTcx
Yi4uMTY5ZDZkZTMzMGY1YmM4ZDFlZTk1MDEwMWY3ZTMxZDQyZTQyZWU5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0xpdmVOb2RlTGlzdC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgTGl2ZU5vZGVMaXN0Ojp+TGl2
ZU5vZGVMaXN0KCkKIAogQ29udGFpbmVyTm9kZSYgTGl2ZU5vZGVMaXN0Ojpyb290Tm9kZSgpIGNv
bnN0CiB7Ci0gICAgaWYgKGlzUm9vdGVkQXREb2N1bWVudCgpICYmIG93bmVyTm9kZSgpLmluRG9j
dW1lbnQoKSkKKyAgICBpZiAoaXNSb290ZWRBdERvY3VtZW50KCkgJiYgb3duZXJOb2RlKCkuaXND
b25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuIG93bmVyTm9kZSgpLmRvY3VtZW50KCk7CiAKICAg
ICByZXR1cm4gb3duZXJOb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2
ZU5vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKaW5kZXggZGVl
NjQ2YzM3ZDE1YWQ0NDMzYzAzMWI1ZTNhNWFjNDFlNjE0Mjk1Ny4uNWIxYjE2ZGNhZWU4YWQwMGJj
ZTk2ZjhiM2RhMDRhZWMyMmMxMDYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xp
dmVOb2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaApAQCAt
MTQ1LDcgKzE0NSw3IEBAIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojp+Q2FjaGVk
TGl2ZU5vZGVMaXN0KCkKIHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+CiBpbmxpbmUgQ29u
dGFpbmVyTm9kZSYgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OnJvb3ROb2RlKCkg
Y29uc3QKIHsKLSAgICBpZiAobm9kZUxpc3QoKS5pc1Jvb3RlZEF0RG9jdW1lbnQoKSAmJiBvd25l
ck5vZGUoKS5pbkRvY3VtZW50KCkpCisgICAgaWYgKG5vZGVMaXN0KCkuaXNSb290ZWRBdERvY3Vt
ZW50KCkgJiYgb3duZXJOb2RlKCkuaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuIG93bmVy
Tm9kZSgpLmRvY3VtZW50KCk7CiAKICAgICByZXR1cm4gb3duZXJOb2RlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggZTkxM2ZkNzNiMDViNWY1N2I0YzczYmY1N2E3MDY1YjMxNmE1OTRlNS4uYTZhOGVm
YTZhZjJiYjY2ZTg0ZjhkMmNiZTg5NDZjMmU5M2FmMzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAt
OTExLDEwICs5MTEsMTAgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6Y2hlY2tTZXRQcmVmaXgo
Y29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgpCiBib29sIE5vZGU6OmlzRGVzY2VuZGFudE9mKGNv
bnN0IE5vZGUmIG90aGVyKSBjb25zdAogewogICAgIC8vIFJldHVybiB0cnVlIGlmIG90aGVyIGlz
IGFuIGFuY2VzdG9yIG9mIHRoaXMsIG90aGVyd2lzZSBmYWxzZQotICAgIGlmICghb3RoZXIuaGFz
Q2hpbGROb2RlcygpIHx8IGluRG9jdW1lbnQoKSAhPSBvdGhlci5pbkRvY3VtZW50KCkpCisgICAg
aWYgKCFvdGhlci5oYXNDaGlsZE5vZGVzKCkgfHwgaXNDb25uZWN0ZWQoKSAhPSBvdGhlci5pc0Nv
bm5lY3RlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKG90aGVyLmlzRG9jdW1l
bnROb2RlKCkpCi0gICAgICAgIHJldHVybiAmZG9jdW1lbnQoKSA9PSAmb3RoZXIgJiYgIWlzRG9j
dW1lbnROb2RlKCkgJiYgaW5Eb2N1bWVudCgpOworICAgICAgICByZXR1cm4gJmRvY3VtZW50KCkg
PT0gJm90aGVyICYmICFpc0RvY3VtZW50Tm9kZSgpICYmIGlzQ29ubmVjdGVkKCk7CiAgICAgZm9y
IChjb25zdCBhdXRvKiBhbmNlc3RvciA9IHBhcmVudE5vZGUoKTsgYW5jZXN0b3I7IGFuY2VzdG9y
ID0gYW5jZXN0b3ItPnBhcmVudE5vZGUoKSkgewogICAgICAgICBpZiAoYW5jZXN0b3IgPT0gJm90
aGVyKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjIwLDkgKzEyMjAsOSBAQCBOb2Rl
JiBOb2RlOjpnZXRSb290Tm9kZShjb25zdCBHZXRSb290Tm9kZU9wdGlvbnMmIG9wdGlvbnMpIGNv
bnN0CiAKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgTm9kZTo6aW5zZXJ0ZWRJ
bnRvKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQogewotICAgIEFTU0VSVChpbnNlcnRp
b25Qb2ludC5pbkRvY3VtZW50KCkgfHwgaXNDb250YWluZXJOb2RlKCkpOwotICAgIGlmIChpbnNl
cnRpb25Qb2ludC5pbkRvY3VtZW50KCkpCi0gICAgICAgIHNldEZsYWcoSW5Eb2N1bWVudEZsYWcp
OworICAgIEFTU0VSVChpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgpIHx8IGlzQ29udGFpbmVy
Tm9kZSgpKTsKKyAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaXNDb25uZWN0ZWQoKSkKKyAgICAgICAg
c2V0RmxhZyhJc0Nvbm5lY3RlZEZsYWcpOwogICAgIGlmIChwYXJlbnRPclNoYWRvd0hvc3ROb2Rl
KCktPmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgIHNldEZsYWcoSXNJblNoYWRvd1RyZWVGbGFn
KTsKIApAQCAtMTIzMyw5ICsxMjMzLDkgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVx
dWVzdCBOb2RlOjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG8KIAogdm9p
ZCBOb2RlOjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKLSAg
ICBBU1NFUlQoaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpIHx8IGlzQ29udGFpbmVyTm9kZSgp
KTsKLSAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpKQotICAgICAgICBjbGVhckZs
YWcoSW5Eb2N1bWVudEZsYWcpOworICAgIEFTU0VSVChpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3Rl
ZCgpIHx8IGlzQ29udGFpbmVyTm9kZSgpKTsKKyAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaXNDb25u
ZWN0ZWQoKSkKKyAgICAgICAgY2xlYXJGbGFnKElzQ29ubmVjdGVkRmxhZyk7CiAgICAgaWYgKGlz
SW5TaGFkb3dUcmVlKCkgJiYgIXRyZWVTY29wZSgpLnJvb3ROb2RlKCkuaXNTaGFkb3dSb290KCkp
CiAgICAgICAgIGNsZWFyRmxhZyhJc0luU2hhZG93VHJlZUZsYWcpOwogfQpAQCAtMTU5OCw4ICsx
NTk4LDggQEAgdW5zaWduZWQgc2hvcnQgTm9kZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24oTm9k
ZSYgb3RoZXJOb2RlKQogCiAgICAgLy8gSWYgb25lIG5vZGUgaXMgaW4gdGhlIGRvY3VtZW50IGFu
ZCB0aGUgb3RoZXIgaXMgbm90LCB3ZSBtdXN0IGJlIGRpc2Nvbm5lY3RlZC4KICAgICAvLyBJZiB0
aGUgbm9kZXMgaGF2ZSBkaWZmZXJlbnQgb3duaW5nIGRvY3VtZW50cywgdGhleSBtdXN0IGJlIGRp
c2Nvbm5lY3RlZC4gIE5vdGUgdGhhdCB3ZSBhdm9pZAotICAgIC8vIGNvbXBhcmluZyBBdHRyIG5v
ZGVzIGhlcmUsIHNpbmNlIHRoZXkgcmV0dXJuIGZhbHNlIGZyb20gaW5Eb2N1bWVudCgpIGFsbCB0
aGUgdGltZSAod2hpY2ggc2VlbXMgbGlrZSBhIGJ1ZykuCi0gICAgaWYgKHN0YXJ0MS0+aW5Eb2N1
bWVudCgpICE9IHN0YXJ0Mi0+aW5Eb2N1bWVudCgpIHx8ICZzdGFydDEtPnRyZWVTY29wZSgpICE9
ICZzdGFydDItPnRyZWVTY29wZSgpKQorICAgIC8vIGNvbXBhcmluZyBBdHRyIG5vZGVzIGhlcmUs
IHNpbmNlIHRoZXkgcmV0dXJuIGZhbHNlIGZyb20gaXNDb25uZWN0ZWQoKSBhbGwgdGhlIHRpbWUg
KHdoaWNoIHNlZW1zIGxpa2UgYSBidWcpLgorICAgIGlmIChzdGFydDEtPmlzQ29ubmVjdGVkKCkg
IT0gc3RhcnQyLT5pc0Nvbm5lY3RlZCgpIHx8ICZzdGFydDEtPnRyZWVTY29wZSgpICE9ICZzdGFy
dDItPnRyZWVTY29wZSgpKQogICAgICAgICByZXR1cm4gY29tcGFyZURldGFjaGVkRWxlbWVudHNQ
b3NpdGlvbigqdGhpcywgb3RoZXJOb2RlKTsKIAogICAgIC8vIFdlIG5lZWQgdG8gZmluZCBhIGNv
bW1vbiBhbmNlc3RvciBjb250YWluZXIsIGFuZCB0aGVuIGNvbXBhcmUgdGhlIGluZGljZXMgb2Yg
dGhlIHR3byBpbW1lZGlhdGUgY2hpbGRyZW4uCkBAIC0yMzk3LDcgKzIzOTcsNyBAQCB2b2lkIE5v
ZGU6OnVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3VudEZvckluc2VydGlvbigpIGNv
bnN0CiAKIGJvb2wgTm9kZTo6aW5SZW5kZXJlZERvY3VtZW50KCkgY29uc3QKIHsKLSAgICByZXR1
cm4gaW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCkuaGFzTGl2aW5nUmVuZGVyVHJlZSgpOworICAg
IHJldHVybiBpc0Nvbm5lY3RlZCgpICYmIGRvY3VtZW50KCkuaGFzTGl2aW5nUmVuZGVyVHJlZSgp
OwogfQogCiB2b2lkKiBOb2RlOjpvcGFxdWVSb290U2xvdygpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRl
eCBjY2MxZDBhZmU4MmU4YTViZDI2ZjYzYmFjNjdmZjhkNDU5YjdmMzJjLi4zN2E3ZjVkZmY4YTMx
NDhkNDdjZWY5ZGFlNGI5MWYzOTNhYTMzNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTM3MiwxNCArMzcy
LDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgcHRyZGlmZl90IHRyZWVTY29wZU1lbW9yeU9mZnNl
dCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihOb2RlLCBtX3RyZWVTY29wZSk7IH0KIAogICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIG5vZGUgaXMgYXNzb2NpYXRlZCB3aXRoIGEgZG9jdW1l
bnQgYW5kIGlzIGluIGl0cyBhc3NvY2lhdGVkIGRvY3VtZW50J3MKLSAgICAvLyBub2RlIHRyZWUs
IGZhbHNlIG90aGVyd2lzZS4KLSAgICBib29sIGluRG9jdW1lbnQoKSBjb25zdCAKKyAgICAvLyBu
b2RlIHRyZWUsIGZhbHNlIG90aGVyd2lzZSAoaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNj
b25uZWN0ZWQpLgorICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdAogICAgIHsgCi0gICAgICAg
IHJldHVybiBnZXRGbGFnKEluRG9jdW1lbnRGbGFnKTsKKyAgICAgICAgcmV0dXJuIGdldEZsYWco
SXNDb25uZWN0ZWRGbGFnKTsKICAgICB9CiAgICAgYm9vbCBpc0luVXNlckFnZW50U2hhZG93VHJl
ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNJblNoYWRvd1RyZWUoKSBjb25zdCB7IHJldHVybiBnZXRG
bGFnKElzSW5TaGFkb3dUcmVlRmxhZyk7IH0KLSAgICBib29sIGlzSW5UcmVlU2NvcGUoKSBjb25z
dCB7IHJldHVybiBnZXRGbGFnKHN0YXRpY19jYXN0PE5vZGVGbGFncz4oSW5Eb2N1bWVudEZsYWcg
fCBJc0luU2hhZG93VHJlZUZsYWcpKTsgfQorICAgIGJvb2wgaXNJblRyZWVTY29wZSgpIGNvbnN0
IHsgcmV0dXJuIGdldEZsYWcoc3RhdGljX2Nhc3Q8Tm9kZUZsYWdzPihJc0Nvbm5lY3RlZEZsYWcg
fCBJc0luU2hhZG93VHJlZUZsYWcpKTsgfQogCiAgICAgYm9vbCBpc0RvY3VtZW50VHlwZU5vZGUo
KSBjb25zdCB7IHJldHVybiBub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZUEVfTk9ERTsgfQogICAg
IHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHB1YmxpYzoKICAgICAvLyBkaXNwYXRjaGluZy4K
ICAgICAvLwogICAgIC8vIFdlYktpdCBub3RpZmllcyB0aGlzIGNhbGxiYWNrIHJlZ2FyZGxlc3Mg
aWYgdGhlIHN1YnRyZWUgb2YgdGhlIG5vZGUgaXMgYSBkb2N1bWVudCB0cmVlIG9yIGEgZmxvYXRp
bmcgc3VidHJlZS4KLSAgICAvLyBJbXBsZW1lbnRhdGlvbiBjYW4gZGV0ZXJtaW5lIHRoZSB0eXBl
IG9mIHN1YnRyZWUgYnkgc2VlaW5nIGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkuCisgICAg
Ly8gSW1wbGVtZW50YXRpb24gY2FuIGRldGVybWluZSB0aGUgdHlwZSBvZiBzdWJ0cmVlIGJ5IHNl
ZWluZyBpbnNlcnRpb25Qb2ludC0+aXNDb25uZWN0ZWQoKS4KICAgICAvLyBGb3IgYSBwZXJmb3Jt
YW5jZSByZWFzb24sIG5vdGlmaWNhdGlvbnMgYXJlIGRlbGl2ZXJlZCBvbmx5IHRvIENvbnRhaW5l
ck5vZGUgc3ViY2xhc3NlcyBpZiB0aGUgaW5zZXJ0aW9uUG9pbnQgaXMgb3V0IG9mIGRvY3VtZW50
LgogICAgIC8vCiAgICAgLy8gVGhlcmUgaXMgYW5vdGhlciBjYWxsYmFjayBuYW1lZCBmaW5pc2hl
ZEluc2VydGluZ1N1YnRyZWUoKSwgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCBkZXNjZW5kYW50
cyBhcmUgbm90aWZpZWQuCkBAIC01NzMsNyArNTczLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBJ
c0hUTUxGbGFnID0gMSA8PCA0LAogICAgICAgICBJc1NWR0ZsYWcgPSAxIDw8IDUsCiAgICAgICAg
IENoaWxkTmVlZHNTdHlsZVJlY2FsY0ZsYWcgPSAxIDw8IDcsCi0gICAgICAgIEluRG9jdW1lbnRG
bGFnID0gMSA8PCA4LAorICAgICAgICBJc0Nvbm5lY3RlZEZsYWcgPSAxIDw8IDgsCiAgICAgICAg
IElzTGlua0ZsYWcgPSAxIDw8IDksCiAgICAgICAgIElzVXNlckFjdGlvbkVsZW1lbnQgPSAxIDw8
IDEwLAogICAgICAgICBIYXNSYXJlRGF0YUZsYWcgPSAxIDw8IDExLApAQCAtNjE3LDEzICs2MTcs
MTMgQEAgcHJvdGVjdGVkOgogICAgICAgICBDcmVhdGVUZXh0ID0gRGVmYXVsdE5vZGVGbGFncyB8
IElzVGV4dEZsYWcsCiAgICAgICAgIENyZWF0ZUNvbnRhaW5lciA9IERlZmF1bHROb2RlRmxhZ3Mg
fCBJc0NvbnRhaW5lckZsYWcsIAogICAgICAgICBDcmVhdGVFbGVtZW50ID0gQ3JlYXRlQ29udGFp
bmVyIHwgSXNFbGVtZW50RmxhZywgCi0gICAgICAgIENyZWF0ZVBzZXVkb0VsZW1lbnQgPSAgQ3Jl
YXRlRWxlbWVudCB8IEluRG9jdW1lbnRGbGFnLAorICAgICAgICBDcmVhdGVQc2V1ZG9FbGVtZW50
ID0gIENyZWF0ZUVsZW1lbnQgfCBJc0Nvbm5lY3RlZEZsYWcsCiAgICAgICAgIENyZWF0ZVNoYWRv
d1Jvb3QgPSBDcmVhdGVDb250YWluZXIgfCBJc0RvY3VtZW50RnJhZ21lbnRGbGFnIHwgSXNJblNo
YWRvd1RyZWVGbGFnLAogICAgICAgICBDcmVhdGVEb2N1bWVudEZyYWdtZW50ID0gQ3JlYXRlQ29u
dGFpbmVyIHwgSXNEb2N1bWVudEZyYWdtZW50RmxhZywKICAgICAgICAgQ3JlYXRlU3R5bGVkRWxl
bWVudCA9IENyZWF0ZUVsZW1lbnQgfCBJc1N0eWxlZEVsZW1lbnRGbGFnLCAKICAgICAgICAgQ3Jl
YXRlSFRNTEVsZW1lbnQgPSBDcmVhdGVTdHlsZWRFbGVtZW50IHwgSXNIVE1MRmxhZywKICAgICAg
ICAgQ3JlYXRlU1ZHRWxlbWVudCA9IENyZWF0ZVN0eWxlZEVsZW1lbnQgfCBJc1NWR0ZsYWcgfCBI
YXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3NGbGFnLAotICAgICAgICBDcmVhdGVEb2N1bWVu
dCA9IENyZWF0ZUNvbnRhaW5lciB8IEluRG9jdW1lbnRGbGFnLAorICAgICAgICBDcmVhdGVEb2N1
bWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IElzQ29ubmVjdGVkRmxhZywKICAgICAgICAgQ3JlYXRl
RWRpdGluZ1RleHQgPSBDcmVhdGVUZXh0IHwgSXNFZGl0aW5nVGV4dE9yVW5kZWZpbmVkQ3VzdG9t
RWxlbWVudEZsYWcsCiAgICAgICAgIENyZWF0ZU1hdGhNTEVsZW1lbnQgPSBDcmVhdGVTdHlsZWRF
bGVtZW50IHwgSXNNYXRoTUxGbGFnCiAgICAgfTsKQEAgLTc2MSw3ICs3NjEsNyBAQCBpbmxpbmUg
dm9pZCogTm9kZTo6b3BhcXVlUm9vdCgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFBvc3NpYmxl
IHJhY2U/CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NTcxMwotICAgIGlmIChpbkRvY3VtZW50KCkpCisgICAgaWYgKGlzQ29ubmVjdGVkKCkpCiAgICAg
ICAgIHJldHVybiAmZG9jdW1lbnQoKTsKICAgICByZXR1cm4gb3BhcXVlUm9vdFNsb3coKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmlkbAppbmRleCA3ODRhOWVmNTUwODIwYWVjMGUwZWQyNGQ3NWMxMjU4Mzk3ZTA0
NDQwLi5kNzM4ZjJhM2RhNThmZmUwZWRjZGY4MTA1ZWU5N2ViODIxNDM5NjdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaWRsCkBAIC04OCw3ICs4OCw3IEBACiAgICAgYm9vbGVhbiBjb250YWlucyhOb2RlPyBvdGhl
cik7CiAKICAgICBbRW5hYmxlZEF0UnVudGltZT1TaGFkb3dET01dIE5vZGUgZ2V0Um9vdE5vZGUo
b3B0aW9uYWwgR2V0Um9vdE5vZGVPcHRpb25zIG9wdGlvbnMpOwotICAgIFtFbmFibGVkQXRSdW50
aW1lPVNoYWRvd0RPTSwgSW1wbGVtZW50ZWRBcz1pbkRvY3VtZW50XSByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiBpc0Nvbm5lY3RlZDsKKyAgICBbRW5hYmxlZEF0UnVudGltZT1TaGFkb3dET01d
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzQ29ubmVjdGVkOwogCiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIEVsZW1lbnQgcGFyZW50RWxlbWVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCmlu
ZGV4IDg2MzIzZmU4NGYxOWU0NjkwZDRiZDQwMmMyZjE4MTAyNjc3N2QwODMuLmY3YzQyYmI4ZTAz
YjRiM2E0YTliNDQ4MjY4ZTY0ODI5YTliODI4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCkBAIC0x
MjYsNyArMTI2LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biAhbV9hbmNob3JOb2RlOyB9CiAgICAgYm9vbCBpc05vdE51bGwoKSBjb25zdCB7IHJldHVybiBt
X2FuY2hvck5vZGU7IH0KLSAgICBib29sIGlzT3JwaGFuKCkgY29uc3QgeyByZXR1cm4gbV9hbmNo
b3JOb2RlICYmICFtX2FuY2hvck5vZGUtPmluRG9jdW1lbnQoKTsgfQorICAgIGJvb2wgaXNPcnBo
YW4oKSBjb25zdCB7IHJldHVybiBtX2FuY2hvck5vZGUgJiYgIW1fYW5jaG9yTm9kZS0+aXNDb25u
ZWN0ZWQoKTsgfQogCiAgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IDlhZDllN2IzNTJhZThm
YzYzOTk2NThiZjI5NGQzZTUwOTg3NmRkZDguLjkyYzMzMjI1NzA4MTQzOTk4MDg1OGE5NjhjNmFi
Y2NkNzI1NTdmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6flByb2Nlc3Np
bmdJbnN0cnVjdGlvbigpCiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAgICAgIG1fY2FjaGVk
U2hlZXQtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiAKLSAgICBpZiAoaW5Eb2N1bWVudCgpKQorICAg
IGlmIChpc0Nvbm5lY3RlZCgpKQogICAgICAgICBkb2N1bWVudCgpLnN0eWxlU2NvcGUoKS5yZW1v
dmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZSgqdGhpcyk7CiB9CiAKQEAgLTE4OCw3ICsxODgsNyBA
QCBib29sIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2hlZXRMb2FkZWQoKQogCiB2b2lkIFByb2Nl
c3NpbmdJbnN0cnVjdGlvbjo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNv
bnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NT
dHlsZVNoZWV0KiBzaGVldCkKIHsKLSAgICBpZiAoIWluRG9jdW1lbnQoKSkgeworICAgIGlmICgh
aXNDb25uZWN0ZWQoKSkgewogICAgICAgICBBU1NFUlQoIW1fc2hlZXQpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9u
OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykKIE5v
ZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpp
bnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgQ2hhcmFj
dGVyRGF0YTo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKLSAgICBpZiAoIWluc2VydGlv
blBvaW50LmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIWluc2VydGlvblBvaW50LmlzQ29ubmVjdGVk
KCkpCiAgICAgICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogICAgIGRvY3VtZW50KCkuc3R5bGVT
Y29wZSgpLmFkZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlKCp0aGlzLCBtX2NyZWF0ZWRCeVBhcnNl
cik7CiAgICAgY2hlY2tTdHlsZVNoZWV0KCk7CkBAIC0yNjMsNyArMjYzLDcgQEAgTm9kZTo6SW5z
ZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246Omluc2VydGVk
SW50byhDb250YWluZXIKIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpyZW1vdmVkRnJvbShD
b250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBDaGFyYWN0ZXJEYXRhOjpyZW1v
dmVkRnJvbShpbnNlcnRpb25Qb2ludCk7Ci0gICAgaWYgKCFpbnNlcnRpb25Qb2ludC5pbkRvY3Vt
ZW50KCkpCisgICAgaWYgKCFpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCiAgICAgZG9jdW1lbnQoKS5zdHlsZVNjb3BlKCkucmVtb3ZlU3R5bGVTaGVl
dENhbmRpZGF0ZU5vZGUoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5kZXggNzMzN2Q0MjRjYTkw
ZGJmNWNkN2YyNmI5MGNmZjhjZmE4MTkxOTk3Yy4uZTQ2MjY2YTJmN2JhNDhlNWEyZTAyMDc5MWEw
OGEyY2QwOTc4ZGM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgRXhj
ZXB0aW9uT3I8c2hvcnQ+IFJhbmdlOjpjb21wYXJlUG9pbnQoTm9kZSYgcmVmTm9kZSwgdW5zaWdu
ZWQgb2Zmc2V0KSBjb25zdAogICAgIGlmIChjaGVja05vZGVSZXN1bHQuaGFzRXhjZXB0aW9uKCkp
IHsKICAgICAgICAgLy8gRE9NNCBzcGVjIHJlcXVpcmVzIHVzIHRvIGNoZWNrIHdoZXRoZXIgcmVm
Tm9kZSBhbmQgc3RhcnQgY29udGFpbmVyIGhhdmUgdGhlIHNhbWUgcm9vdCBmaXJzdAogICAgICAg
ICAvLyBidXQgd2UgZG8gaXQgaW4gdGhlIHJldmVyc2Ugb3JkZXIgdG8gYXZvaWQgTyhuKSBvcGVy
YXRpb24gaGVyZSBpbiBjb21tb24gY2FzZS4KLSAgICAgICAgaWYgKCFyZWZOb2RlLmluRG9jdW1l
bnQoKSAmJiAhY29tbW9uQW5jZXN0b3JDb250YWluZXIoJnJlZk5vZGUsICZzdGFydENvbnRhaW5l
cigpKSkKKyAgICAgICAgaWYgKCFyZWZOb2RlLmlzQ29ubmVjdGVkKCkgJiYgIWNvbW1vbkFuY2Vz
dG9yQ29udGFpbmVyKCZyZWZOb2RlLCAmc3RhcnRDb250YWluZXIoKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgV1JPTkdfRE9DVU1FTlRfRVJSIH07CiAgICAgICAgIHJldHVybiBj
aGVja05vZGVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIH0KQEAgLTI5Miw3ICsyOTIs
NyBAQCBFeGNlcHRpb25PcjxSYW5nZTo6Q29tcGFyZVJlc3VsdHM+IFJhbmdlOjpjb21wYXJlTm9k
ZShOb2RlJiByZWZOb2RlKSBjb25zdAogICAgIC8vIFRoaXMgbWV0aG9kIHJldHVybnMgMCwgMSwg
Miwgb3IgMyBiYXNlZCBvbiBpZiB0aGUgbm9kZSBpcyBiZWZvcmUsIGFmdGVyLAogICAgIC8vIGJl
Zm9yZSBhbmQgYWZ0ZXIoc3Vycm91bmRzKSwgb3IgaW5zaWRlIHRoZSByYW5nZSwgcmVzcGVjdGl2
ZWx5CiAKLSAgICBpZiAoIXJlZk5vZGUuaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKCFyZWZOb2Rl
LmlzQ29ubmVjdGVkKCkpIHsKICAgICAgICAgLy8gRmlyZWZveCBkb2Vzbid0IHRocm93IGFuIGV4
Y2VwdGlvbiBmb3IgdGhpcyBjYXNlOyBpdCByZXR1cm5zIDAuCiAgICAgICAgIHJldHVybiBOT0RF
X0JFRk9SRTsKICAgICB9CkBAIC00NzMsNyArNDczLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUmFu
Z2U6OmRlbGV0ZUNvbnRlbnRzKCkKIAogRXhjZXB0aW9uT3I8Ym9vbD4gUmFuZ2U6OmludGVyc2Vj
dHNOb2RlKE5vZGUmIHJlZk5vZGUpIGNvbnN0CiB7Ci0gICAgaWYgKCFyZWZOb2RlLmluRG9jdW1l
bnQoKSB8fCAmcmVmTm9kZS5kb2N1bWVudCgpICE9ICZvd25lckRvY3VtZW50KCkpCisgICAgaWYg
KCFyZWZOb2RlLmlzQ29ubmVjdGVkKCkgfHwgJnJlZk5vZGUuZG9jdW1lbnQoKSAhPSAmb3duZXJE
b2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBDb250YWluZXJOb2RlKiBw
YXJlbnROb2RlID0gcmVmTm9kZS5wYXJlbnROb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxl
bWVudC5jcHAKaW5kZXggMGJkYTNiOTdkZThiMDM0NjA1ZmM1MTQzODM1M2Y0MTQ4MGQyYjA0MC4u
ZDAxOGM1ZDg4MmQ3M2I5MGRmMDIwNTNiMDU0ZTUxMTVlOWI3ZDhkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmNwcApAQCAtNzQsNyArNzQsNyBAQCBTY3JpcHRFbGVtZW50OjpTY3Jp
cHRFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgcGFyc2VySW5zZXJ0ZWQsIGJvb2wgYWxy
ZWFkeQogCiBib29sIFNjcmlwdEVsZW1lbnQ6OnNob3VsZENhbGxGaW5pc2hlZEluc2VydGluZ1N1
YnRyZWUoQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7Ci0gICAgcmV0dXJuIGluc2Vy
dGlvblBvaW50LmluRG9jdW1lbnQoKSAmJiAhbV9wYXJzZXJJbnNlcnRlZDsKKyAgICByZXR1cm4g
aW5zZXJ0aW9uUG9pbnQuaXNDb25uZWN0ZWQoKSAmJiAhbV9wYXJzZXJJbnNlcnRlZDsKIH0KIAog
dm9pZCBTY3JpcHRFbGVtZW50OjpmaW5pc2hlZEluc2VydGluZ1N1YnRyZWUoKQpAQCAtODUsNyAr
ODUsNyBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmZpbmlzaGVkSW5zZXJ0aW5nU3VidHJlZSgpCiAK
IHZvaWQgU2NyaXB0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKCkKIHsKLSAgICBpZiAoIW1fcGFy
c2VySW5zZXJ0ZWQgJiYgbV9lbGVtZW50LmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIW1fcGFyc2Vy
SW5zZXJ0ZWQgJiYgbV9lbGVtZW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHByZXBhcmVTY3Jp
cHQoKTsgLy8gRklYTUU6IFByb3ZpZGUgYSByZWFsIHN0YXJ0aW5nIGxpbmUgbnVtYmVyIGhlcmUu
CiB9CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIFNjcmlwdEVsZW1lbnQ6OnByZXBhcmVTY3Jp
cHQoY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uLCBMZWdhYwogICAgIGlm
ICghaGFzU291cmNlQXR0cmlidXRlKCkgJiYgIW1fZWxlbWVudC5maXJzdENoaWxkKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghbV9lbGVtZW50LmluRG9jdW1lbnQoKSkKKyAg
ICBpZiAoIW1fZWxlbWVudC5pc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBTY3JpcHRUeXBlIHNjcmlwdFR5cGUgPSBTY3JpcHRUeXBlOjpDbGFzc2ljOwpAQCAtMjg1
LDcgKzI4NSw3IEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6cmVxdWVzdENsYXNzaWNTY3JpcHQoY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwpCiAgICAgUmVmPERvY3VtZW50PiBvcmlnaW5hbERvY3VtZW50
KG1fZWxlbWVudC5kb2N1bWVudCgpKTsKICAgICBpZiAoIW1fZWxlbWVudC5kaXNwYXRjaEJlZm9y
ZUxvYWRFdmVudChzb3VyY2VVUkwpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYm9vbCBk
aWRFdmVudExpc3RlbmVyRGlzY29ubmVjdFRoaXNFbGVtZW50ID0gIW1fZWxlbWVudC5pbkRvY3Vt
ZW50KCkgfHwgJm1fZWxlbWVudC5kb2N1bWVudCgpICE9IG9yaWdpbmFsRG9jdW1lbnQucHRyKCk7
CisgICAgYm9vbCBkaWRFdmVudExpc3RlbmVyRGlzY29ubmVjdFRoaXNFbGVtZW50ID0gIW1fZWxl
bWVudC5pc0Nvbm5lY3RlZCgpIHx8ICZtX2VsZW1lbnQuZG9jdW1lbnQoKSAhPSBvcmlnaW5hbERv
Y3VtZW50LnB0cigpOwogICAgIGlmIChkaWRFdmVudExpc3RlbmVyRGlzY29ubmVjdFRoaXNFbGVt
ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTMyNSw3ICszMjUsNyBAQCBib29sIFNj
cmlwdEVsZW1lbnQ6OnJlcXVlc3RNb2R1bGVTY3JpcHQoY29uc3QgVGV4dFBvc2l0aW9uJiBzY3Jp
cHRTdGFydFBvc2l0aW9uKQogICAgICAgICBpZiAoIW1fZWxlbWVudC5kaXNwYXRjaEJlZm9yZUxv
YWRFdmVudChzb3VyY2VVUkwpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IGJvb2wgZGlkRXZlbnRMaXN0ZW5lckRpc2Nvbm5lY3RUaGlzRWxlbWVudCA9ICFtX2VsZW1lbnQu
aW5Eb2N1bWVudCgpIHx8ICZtX2VsZW1lbnQuZG9jdW1lbnQoKSAhPSBvcmlnaW5hbERvY3VtZW50
LnB0cigpOworICAgICAgICBib29sIGRpZEV2ZW50TGlzdGVuZXJEaXNjb25uZWN0VGhpc0VsZW1l
bnQgPSAhbV9lbGVtZW50LmlzQ29ubmVjdGVkKCkgfHwgJm1fZWxlbWVudC5kb2N1bWVudCgpICE9
IG9yaWdpbmFsRG9jdW1lbnQucHRyKCk7CiAgICAgICAgIGlmIChkaWRFdmVudExpc3RlbmVyRGlz
Y29ubmVjdFRoaXNFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00MzMs
NyArNDMzLDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlUGVuZGluZ1NjcmlwdChQZW5k
aW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0KQogCiBib29sIFNjcmlwdEVsZW1lbnQ6Omlnbm9yZXNM
b2FkUmVxdWVzdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYWxyZWFkeVN0YXJ0ZWQgfHwgbV9p
c0V4dGVybmFsU2NyaXB0IHx8IG1fcGFyc2VySW5zZXJ0ZWQgfHwgIW1fZWxlbWVudC5pbkRvY3Vt
ZW50KCk7CisgICAgcmV0dXJuIG1fYWxyZWFkeVN0YXJ0ZWQgfHwgbV9pc0V4dGVybmFsU2NyaXB0
IHx8IG1fcGFyc2VySW5zZXJ0ZWQgfHwgIW1fZWxlbWVudC5pc0Nvbm5lY3RlZCgpOwogfQogCiBi
b29sIFNjcmlwdEVsZW1lbnQ6OmlzU2NyaXB0Rm9yRXZlbnRTdXBwb3J0ZWQoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0UnVubmVyLmNwcAppbmRleCAxZDUyZTU4ODhlMjcxYjBlODFiMzA1ZjFl
ZjBjOWMyOGRjNWZjNGI1Li4wYzY2NmFhNTJjYmMxN2E3OTM5MGE4ZmVjNDJhMzI0M2ExYmE1NmEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcApAQCAtNTksNyArNTksNyBAQCBTY3Jp
cHRSdW5uZXI6On5TY3JpcHRSdW5uZXIoKQogCiB2b2lkIFNjcmlwdFJ1bm5lcjo6cXVldWVTY3Jp
cHRGb3JFeGVjdXRpb24oU2NyaXB0RWxlbWVudCYgc2NyaXB0RWxlbWVudCwgTG9hZGFibGVTY3Jp
cHQmIGxvYWRhYmxlU2NyaXB0LCBFeGVjdXRpb25UeXBlIGV4ZWN1dGlvblR5cGUpCiB7Ci0gICAg
QVNTRVJUKHNjcmlwdEVsZW1lbnQuZWxlbWVudCgpLmluRG9jdW1lbnQoKSk7CisgICAgQVNTRVJU
KHNjcmlwdEVsZW1lbnQuZWxlbWVudCgpLmlzQ29ubmVjdGVkKCkpOwogCiAgICAgbV9kb2N1bWVu
dC5pbmNyZW1lbnRMb2FkRXZlbnREZWxheUNvdW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3Rv
clF1ZXJ5LmNwcAppbmRleCA0OGE5N2M2YmM5N2E2ZTc1MDI1MTI4NDUwZGY4NTA1M2ZiN2NjNDE2
Li5mNDliYzMwYzU4ODM0ZDdlODkyM2NmODA2ODMwZmE3ZWM4N2ZiYzM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NlbGVjdG9yUXVlcnkuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgRWxlbWVudCogU2VsZWN0
b3JEYXRhTGlzdDo6cXVlcnlGaXJzdChDb250YWluZXJOb2RlJiByb290Tm9kZSkgY29uc3QKIAog
c3RhdGljIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvckZvcklkTG9va3VwKGNvbnN0IENvbnRh
aW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBDU1NTZWxlY3RvciYgZmlyc3RTZWxlY3RvcikKIHsK
LSAgICBpZiAoIXJvb3ROb2RlLmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIXJvb3ROb2RlLmlzQ29u
bmVjdGVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChyb290Tm9kZS5kb2N1
bWVudCgpLmluUXVpcmtzTW9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI0Niw3
ICsyNDYsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUZh
c3RQYXRoRm9ySWRTZWxlY3Rvcihjb25zdCBDb250YWluZQogCiBzdGF0aWMgQ29udGFpbmVyTm9k
ZSYgZmlsdGVyUm9vdEJ5SWQoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IENTU1NlbGVj
dG9yJiBmaXJzdFNlbGVjdG9yKQogewotICAgIGlmICghcm9vdE5vZGUuaW5Eb2N1bWVudCgpKQor
ICAgIGlmICghcm9vdE5vZGUuaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuIHJvb3ROb2Rl
OwogICAgIGlmIChyb290Tm9kZS5kb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpKQogICAgICAgICBy
ZXR1cm4gcm9vdE5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggMDVkMjFjMmM2
Y2I0YmU1YjQ2NTNhODQ1OWM0ZmNiNTc5ZWI4ZmQwZS4uZjU0ZmQ3NGIyOTczODg0Y2Q5YWUyNGU1
OTAzMWEwNmE1NTM3NGZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtNzEsNyAr
NzEsNyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1
bmlxdWVfcHRyPFNsb3RBc3NpZ25tZW50PiYmIHNsbwogCiBTaGFkb3dSb290Ojp+U2hhZG93Um9v
dCgpCiB7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSkKKyAgICBpZiAoaXNDb25uZWN0ZWQoKSkKICAg
ICAgICAgZG9jdW1lbnQoKS5kaWRSZW1vdmVJbkRvY3VtZW50U2hhZG93Um9vdCgqdGhpcyk7CiAK
ICAgICAvLyBXZSBjYW5ub3QgbGV0IENvbnRhaW5lck5vZGUgZGVzdHJ1Y3RvciBjYWxsIHdpbGxC
ZURlbGV0ZWRGcm9tKCkKQEAgLTg4LDkgKzg4LDkgQEAgU2hhZG93Um9vdDo6flNoYWRvd1Jvb3Qo
KQogCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNoYWRvd1Jvb3Q6Omluc2Vy
dGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKLSAgICBib29sIHdhc0lu
RG9jdW1lbnQgPSBpbkRvY3VtZW50KCk7CisgICAgYm9vbCB3YXNJbkRvY3VtZW50ID0gaXNDb25u
ZWN0ZWQoKTsKICAgICBEb2N1bWVudEZyYWdtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9p
bnQpOwotICAgIGlmIChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkgJiYgIXdhc0luRG9jdW1l
bnQpCisgICAgaWYgKGluc2VydGlvblBvaW50LmlzQ29ubmVjdGVkKCkgJiYgIXdhc0luRG9jdW1l
bnQpCiAgICAgICAgIGRvY3VtZW50KCkuZGlkSW5zZXJ0SW5Eb2N1bWVudFNoYWRvd1Jvb3QoKnRo
aXMpOwogICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogfQpAQCAtOTgsNyArOTgsNyBAQCBOb2Rl
OjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNoYWRvd1Jvb3Q6Omluc2VydGVkSW50byhD
b250YWluZXJOb2RlJiBpbnNlcgogdm9pZCBTaGFkb3dSb290OjpyZW1vdmVkRnJvbShDb250YWlu
ZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBEb2N1bWVudEZyYWdtZW50OjpyZW1vdmVk
RnJvbShpbnNlcnRpb25Qb2ludCk7Ci0gICAgaWYgKGluc2VydGlvblBvaW50LmluRG9jdW1lbnQo
KSAmJiAhaW5Eb2N1bWVudCgpKQorICAgIGlmIChpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgp
ICYmICFpc0Nvbm5lY3RlZCgpKQogICAgICAgICBkb2N1bWVudCgpLmRpZFJlbW92ZUluRG9jdW1l
bnRTaGFkb3dSb290KCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZUFkb3B0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0
ZXIuY3BwCmluZGV4IDgzMDdhYWNmMTg1ZDU2Y2VmZjQwNjE5NTY1Nzk3MGVjZGJmYjA0MWEuLjc1
MWQyYTgxMzFkYjhkOTU4OGEwOTIzOGRjOGM1MTk4YmJhNTdkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlQWRvcHRlci5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBpbmxpbmUgdm9pZCBU
cmVlU2NvcGVBZG9wdGVyOjp1cGRhdGVUcmVlU2NvcGUoTm9kZSYgbm9kZSkgY29uc3QKIAogaW5s
aW5lIHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZU5vZGVUb05ld0RvY3VtZW50KE5vZGUmIG5v
ZGUsIERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBjb25zdAog
ewotICAgIEFTU0VSVCghbm9kZS5pbkRvY3VtZW50KCkgfHwgJm9sZERvY3VtZW50ICE9ICZuZXdE
b2N1bWVudCk7CisgICAgQVNTRVJUKCFub2RlLmlzQ29ubmVjdGVkKCkgfHwgJm9sZERvY3VtZW50
ICE9ICZuZXdEb2N1bWVudCk7CiAKICAgICBuZXdEb2N1bWVudC5pbmNyZW1lbnRSZWZlcmVuY2lu
Z05vZGVDb3VudCgpOwogICAgIG9sZERvY3VtZW50LmRlY3JlbWVudFJlZmVyZW5jaW5nTm9kZUNv
dW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5QmxvY2tFbGVt
ZW50Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50
Q29tbWFuZC5jcHAKaW5kZXggMWI0OWE4MzgwOGVhOTc2N2U1ZGI3ZGU4ZGFhNTRhZTkwMTMzODZl
NS4uNjczMTg4MGVhZmE3Yzk3MmUwZjZmZTdlMDUxMjgwZmE2ZmQyZDMzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcApAQCAt
MTU3LDExICsxNTcsMTEgQEAgdm9pZCBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQ6OmZvcm1hdFNl
bGVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZTZWwKICAgICAgICAgLy8gaW5k
ZW50SW50b0Jsb2NrcXVvdGUgY291bGQgbW92ZSBtb3JlIHRoYW4gb25lIHBhcmFncmFwaCBpZiB0
aGUgcGFyYWdyYXBoCiAgICAgICAgIC8vIGlzIGluIGEgbGlzdCBpdGVtIG9yIGEgdGFibGUuIEFz
IGEgcmVzdWx0LCBlbmRBZnRlclNlbGVjdGlvbiBjb3VsZCByZWZlciB0byBhIHBvc2l0aW9uCiAg
ICAgICAgIC8vIG5vIGxvbmdlciBpbiB0aGUgZG9jdW1lbnQuCi0gICAgICAgIGlmIChlbmRBZnRl
clNlbGVjdGlvbi5pc05vdE51bGwoKSAmJiAhZW5kQWZ0ZXJTZWxlY3Rpb24uZGVlcEVxdWl2YWxl
bnQoKS5hbmNob3JOb2RlKCktPmluRG9jdW1lbnQoKSkKKyAgICAgICAgaWYgKGVuZEFmdGVyU2Vs
ZWN0aW9uLmlzTm90TnVsbCgpICYmICFlbmRBZnRlclNlbGVjdGlvbi5kZWVwRXF1aXZhbGVudCgp
LmFuY2hvck5vZGUoKS0+aXNDb25uZWN0ZWQoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAvLyBTYW5pdHkgY2hlY2s6IE1ha2Ugc3VyZSBvdXIgbW92ZVBhcmFncmFwaCBjYWxscyBkaWRu
J3QgcmVtb3ZlIGVuZE9mTmV4dFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWRO
b2RlKCkKICAgICAgICAgLy8gSWYgc29tZWhvdyB3ZSBkaWQsIHJldHVybiB0byBwcmV2ZW50IGNy
YXNoZXMuCi0gICAgICAgIGlmIChlbmRPZk5leHRQYXJhZ3JhcGguaXNOb3ROdWxsKCkgJiYgIWVu
ZE9mTmV4dFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKS0+aW5Eb2N1bWVu
dCgpKSB7CisgICAgICAgIGlmIChlbmRPZk5leHRQYXJhZ3JhcGguaXNOb3ROdWxsKCkgJiYgIWVu
ZE9mTmV4dFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKS0+aXNDb25uZWN0
ZWQoKSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBw
bHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHAKaW5kZXggZWEwYzMxNTUyOTRlZjdjNTBmOWE1Yjg4ODMxYTMzNmJjMWMyN2UzNy4u
ZWZjMWY4ODM5OTQzYTU3MGRjMzU1ZTNiZGMyODcyN2E1ZjRiNTBkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTc1NSw3ICs3NTUsNyBAQCBz
dHJ1Y3QgSW5saW5lUnVuVG9BcHBseVN0eWxlIHsKIAogICAgIGJvb2wgc3RhcnRBbmRFbmRBcmVT
dGlsbEluRG9jdW1lbnQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXJ0ICYmIGVuZCAmJiBz
dGFydC0+aW5Eb2N1bWVudCgpICYmIGVuZC0+aW5Eb2N1bWVudCgpOworICAgICAgICByZXR1cm4g
c3RhcnQgJiYgZW5kICYmIHN0YXJ0LT5pc0Nvbm5lY3RlZCgpICYmIGVuZC0+aXNDb25uZWN0ZWQo
KTsKICAgICB9CiAKICAgICBSZWZQdHI8Tm9kZT4gc3RhcnQ7CkBAIC04NzAsNyArODcwLDcgQEAg
dm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlQ29uZmxpY3RpbmdJbmxpbmVTdHlsZUZyb21S
dW4oRWRpdGluZ1N0eWxlKiBzdHlsZSwKIHsKICAgICBBU1NFUlQocnVuU3RhcnQgJiYgcnVuRW5k
KTsKICAgICBSZWZQdHI8Tm9kZT4gbmV4dCA9IHJ1blN0YXJ0OwotICAgIGZvciAoUmVmUHRyPE5v
ZGU+IG5vZGUgPSBuZXh0OyBub2RlICYmIG5vZGUtPmluRG9jdW1lbnQoKSAmJiBub2RlICE9IHBh
c3RFbmROb2RlOyBub2RlID0gbmV4dCkgeworICAgIGZvciAoUmVmUHRyPE5vZGU+IG5vZGUgPSBu
ZXh0OyBub2RlICYmIG5vZGUtPmlzQ29ubmVjdGVkKCkgJiYgbm9kZSAhPSBwYXN0RW5kTm9kZTsg
bm9kZSA9IG5leHQpIHsKICAgICAgICAgaWYgKGVkaXRpbmdJZ25vcmVzQ29udGVudCgqbm9kZSkp
IHsKICAgICAgICAgICAgIEFTU0VSVCghbm9kZS0+Y29udGFpbnMocGFzdEVuZE5vZGUuZ2V0KCkp
KTsKICAgICAgICAgICAgIG5leHQgPSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJl
bigqbm9kZSk7CkBAIC04ODQsNyArODg0LDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cmVt
b3ZlQ29uZmxpY3RpbmdJbmxpbmVTdHlsZUZyb21SdW4oRWRpdGluZ1N0eWxlKiBzdHlsZSwKICAg
ICAgICAgUmVmUHRyPE5vZGU+IG5leHRTaWJsaW5nID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKICAg
ICAgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHBhcmVudCA9IG5vZGUtPnBhcmVudE5vZGUoKTsK
ICAgICAgICAgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgZG93bmNhc3Q8SFRN
TEVsZW1lbnQ+KG5vZGUuZ2V0KCkpLCBSZW1vdmVBbHdheXMpOwotICAgICAgICBpZiAoIW5vZGUt
PmluRG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoIW5vZGUtPmlzQ29ubmVjdGVkKCkpIHsKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBXZSBtaWdodCBuZWVkIHRvIHVwZGF0ZSB0aGUgc3RhcnQgYW5k
IHRoZSBlbmQgb2YgY3VycmVudCBzZWxlY3Rpb24gaGVyZSBidXQgbmVlZCBhIHRlc3QuCiAgICAg
ICAgICAgICBpZiAocnVuU3RhcnQgPT0gbm9kZSkKICAgICAgICAgICAgICAgICBydW5TdGFydCA9
IHByZXZpb3VzU2libGluZyA/IHByZXZpb3VzU2libGluZy0+bmV4dFNpYmxpbmcoKSA6IHBhcmVu
dC0+Zmlyc3RDaGlsZCgpOwpAQCAtOTE0LDcgKzkxNCw3IEBAIGJvb2wgQXBwbHlTdHlsZUNvbW1h
bmQ6OnJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoRWRpdGluZ1N0eWxlKiBzdHlsZSwgUGFz
c1JlCiAgICAgaWYgKHJlbW92ZUltcGxpY2l0bHlTdHlsZWRFbGVtZW50KHN0eWxlLCBlbGVtZW50
LmdldCgpLCBtb2RlLCBleHRyYWN0ZWRTdHlsZSkpCiAgICAgICAgIHJlbW92ZWQgPSB0cnVlOwog
Ci0gICAgaWYgKCFlbGVtZW50LT5pbkRvY3VtZW50KCkpCisgICAgaWYgKCFlbGVtZW50LT5pc0Nv
bm5lY3RlZCgpKQogICAgICAgICByZXR1cm4gcmVtb3ZlZDsKIAogICAgIC8vIElmIHRoZSBub2Rl
IHdhcyBjb252ZXJ0ZWQgdG8gYSBzcGFuLCB0aGUgc3BhbiBtYXkgc3RpbGwgY29udGFpbiByZWxl
dmFudApAQCAtOTMxLDcgKzkzMSw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlcGxhY2VX
aXRoU3Bhbk9yUmVtb3ZlSWZXaXRob3V0QXR0cmlidXRlcyhIVE1MRWxlbWVudComCiAgICAgICAg
IHJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW4oZWxlbSk7CiAgICAgZWxzZSB7CiAgICAgICAg
IEhUTUxFbGVtZW50KiBuZXdTcGFuRWxlbWVudCA9IHJlcGxhY2VFbGVtZW50V2l0aFNwYW5QcmVz
ZXJ2aW5nQ2hpbGRyZW5BbmRBdHRyaWJ1dGVzKGVsZW0pOwotICAgICAgICBBU1NFUlQobmV3U3Bh
bkVsZW1lbnQgJiYgbmV3U3BhbkVsZW1lbnQtPmluRG9jdW1lbnQoKSk7CisgICAgICAgIEFTU0VS
VChuZXdTcGFuRWxlbWVudCAmJiBuZXdTcGFuRWxlbWVudC0+aXNDb25uZWN0ZWQoKSk7CiAgICAg
ICAgIGVsZW0gPSBuZXdTcGFuRWxlbWVudDsKICAgICB9CiB9CkBAIC0xMDk3LDggKzEwOTcsOCBA
QCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVJbmxpbmVTdHlsZShFZGl0aW5nU3R5bGUq
IHN0eWxlLCBjb25zdCBQb3NpdGlvbiYgcwogewogICAgIEFTU0VSVChzdGFydC5pc05vdE51bGwo
KSk7CiAgICAgQVNTRVJUKGVuZC5pc05vdE51bGwoKSk7Ci0gICAgQVNTRVJUKHN0YXJ0LmFuY2hv
ck5vZGUoKS0+aW5Eb2N1bWVudCgpKTsKLSAgICBBU1NFUlQoZW5kLmFuY2hvck5vZGUoKS0+aW5E
b2N1bWVudCgpKTsKKyAgICBBU1NFUlQoc3RhcnQuYW5jaG9yTm9kZSgpLT5pc0Nvbm5lY3RlZCgp
KTsKKyAgICBBU1NFUlQoZW5kLmFuY2hvck5vZGUoKS0+aXNDb25uZWN0ZWQoKSk7CiAgICAgQVNT
RVJUKGNvbXBhcmVQb3NpdGlvbnMoc3RhcnQsIGVuZCkgPD0gMCk7CiAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBhc3NlcnQgdGhhdCBzdGFydC9lbmQgYXJlIG5vdCBpbiB0aGUgbWlkZGxlIG9mIGEg
dGV4dCBub2RlLgogCkBAIC0xMTQ4LDcgKzExNDgsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5k
OjpyZW1vdmVJbmxpbmVTdHlsZShFZGl0aW5nU3R5bGUqIHN0eWxlLCBjb25zdCBQb3NpdGlvbiYg
cwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVt
ZW50KHN0eWxlLCBlbGVtZW50LnB0cigpLCBSZW1vdmVJZk5lZWRlZCwgc3R5bGVUb1B1c2hEb3du
LmdldCgpKTsKLSAgICAgICAgICAgIGlmICghZWxlbWVudC0+aW5Eb2N1bWVudCgpKSB7CisgICAg
ICAgICAgICBpZiAoIWVsZW1lbnQtPmlzQ29ubmVjdGVkKCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAocy5kZXByZWNhdGVkTm9kZSgpID09IGVsZW1lbnQucHRyKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgLy8gU2luY2UgZWxlbSBtdXN0IGhhdmUgYmVlbiBmdWxseSBzZWxlY3RlZCwgYW5kIGl0
IGlzIGF0IHRoZSBzdGFydAogICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGUgc2VsZWN0aW9u
LCBpdCBpcyBjbGVhciB3ZSBjYW4gc2V0IHRoZSBuZXcgcyBvZmZzZXQgdG8gMC4KQEAgLTE0MDEs
NyArMTQwMSw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFkZEJsb2NrU3R5bGUoY29uc3Qg
U3R5bGVDaGFuZ2UmIHN0eWxlQ2hhbmdlLCBIVE1MRWxlbWVuCiAKIHZvaWQgQXBwbHlTdHlsZUNv
bW1hbmQ6OmFkZElubGluZVN0eWxlSWZOZWVkZWQoRWRpdGluZ1N0eWxlKiBzdHlsZSwgUGFzc1Jl
ZlB0cjxOb2RlPiBwYXNzZWRTdGFydCwgUGFzc1JlZlB0cjxOb2RlPiBwYXNzZWRFbmQsIEVBZGRT
dHlsZWRFbGVtZW50IGFkZFN0eWxlZEVsZW1lbnQpCiB7Ci0gICAgaWYgKCFwYXNzZWRTdGFydCB8
fCAhcGFzc2VkRW5kIHx8ICFwYXNzZWRTdGFydC0+aW5Eb2N1bWVudCgpIHx8ICFwYXNzZWRFbmQt
PmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIXBhc3NlZFN0YXJ0IHx8ICFwYXNzZWRFbmQgfHwgIXBh
c3NlZFN0YXJ0LT5pc0Nvbm5lY3RlZCgpIHx8ICFwYXNzZWRFbmQtPmlzQ29ubmVjdGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxOb2RlPiBzdGFydCA9IHBhc3NlZFN0YXJ0OwpA
QCAtMTQzMCw4ICsxNDMwLDggQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVT
dHlsZUNoYW5nZShQYXNzUmVmUHRyPE5vZGU+IHBhc3NlZFN0YXJ0LCBQYXMKIHsKICAgICBSZWZQ
dHI8Tm9kZT4gc3RhcnROb2RlID0gcGFzc2VkU3RhcnQ7CiAgICAgUmVmUHRyPE5vZGU+IGVuZE5v
ZGUgPSBwYXNzZWRFbmQ7Ci0gICAgQVNTRVJUKHN0YXJ0Tm9kZS0+aW5Eb2N1bWVudCgpKTsKLSAg
ICBBU1NFUlQoZW5kTm9kZS0+aW5Eb2N1bWVudCgpKTsKKyAgICBBU1NFUlQoc3RhcnROb2RlLT5p
c0Nvbm5lY3RlZCgpKTsKKyAgICBBU1NFUlQoZW5kTm9kZS0+aXNDb25uZWN0ZWQoKSk7CiAKICAg
ICAvLyBGaW5kIGFwcHJvcHJpYXRlIGZvbnQgYW5kIHNwYW4gZWxlbWVudHMgdG9wLWRvd24uCiAg
ICAgSFRNTEZvbnRFbGVtZW50KiBmb250Q29udGFpbmVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggZjdmZDQ4NDhi
N2U4MzYzZTFkOWIwMWVhMzk3NzhhYmI1YmM4ZDQ4NS4uNjFkZGJmNTBlNTgyYzNlNDBiMTZiZjJi
NDU2NGE3NjQyYTc1MmRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21w
b3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5jcHAKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjppbnNlcnROb2RlQXQoUGFzc1JlZlB0cjxOb2RlPiBpbnNlcnRDaGlsZCwgY29uc3Qg
UG9zaQogICAgICAgICBzcGxpdFRleHROb2RlKGRvd25jYXN0PFRleHQ+KHJlZkNoaWxkKSwgb2Zm
c2V0KTsKIAogICAgICAgICAvLyBNdXRhdGlvbiBldmVudHMgKGJ1ZyAyMjYzNCkgZnJvbSB0aGUg
dGV4dCBub2RlIGluc2VydGlvbiBtYXkgaGF2ZSByZW1vdmVkIHRoZSByZWZDaGlsZAotICAgICAg
ICBpZiAoIXJlZkNoaWxkLT5pbkRvY3VtZW50KCkpCisgICAgICAgIGlmICghcmVmQ2hpbGQtPmlz
Q29ubmVjdGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGluc2VydE5vZGVCZWZv
cmUoaW5zZXJ0Q2hpbGQsIHJlZkNoaWxkKTsKICAgICB9IGVsc2UKQEAgLTY0OCw3ICs2NDgsNyBA
QCBIVE1MRWxlbWVudCogQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VFbGVtZW50V2l0aFNw
YW5QcmVzZXJ2aW5nQ2hpbGRyZW5BbmRBdAogICAgIC8vIFJldHVybmluZyBhIHJhdyBwb2ludGVy
IGhlcmUgaXMgT0sgYmVjYXVzZSB0aGUgY29tbWFuZCBpcyByZXRhaW5lZCBieQogICAgIC8vIGFw
cGx5Q29tbWFuZFRvQ29tcG9zaXRlICh0aHVzIHJldGFpbmluZyB0aGUgc3BhbiksIGFuZCB0aGUg
c3BhbiBpcyBhbHNvCiAgICAgLy8gaW4gdGhlIERPTSB0cmVlLCBhbmQgdGh1cyBhbGl2ZSB3aGll
IGl0IGhhcyBhIHBhcmVudC4KLSAgICBBU1NFUlQoY29tbWFuZC0+c3BhbkVsZW1lbnQoKS0+aW5E
b2N1bWVudCgpKTsKKyAgICBBU1NFUlQoY29tbWFuZC0+c3BhbkVsZW1lbnQoKS0+aXNDb25uZWN0
ZWQoKSk7CiAgICAgcmV0dXJuIGNvbW1hbmQtPnNwYW5FbGVtZW50KCk7CiB9CiAKQEAgLTEyMzgs
NyArMTIzOCw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnB1c2hBbmNob3JFbGVtZW50
RG93bihFbGVtZW50JiBhbmNob3JFbGVtZW50KQogICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNp
YmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGUoJmFuY2hvckVsZW1lbnQp
KTsKICAgICBhcHBseVN0eWxlZEVsZW1lbnQoJmFuY2hvckVsZW1lbnQpOwogICAgIC8vIENsb25l
cyBvZiBhbmNob3JFbGVtZW50IGhhdmUgYmVlbiBwdXNoZWQgZG93biwgbm93IHJlbW92ZSBpdC4K
LSAgICBpZiAoYW5jaG9yRWxlbWVudC5pbkRvY3VtZW50KCkpCisgICAgaWYgKGFuY2hvckVsZW1l
bnQuaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbigm
YW5jaG9yRWxlbWVudCk7CiB9CiAKQEAgLTE0ODUsOSArMTQ4NSw5IEBAIHZvaWQgQ29tcG9zaXRl
RWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRP
ZlBhcmFncmFwCiAgICAgZnJhbWUoKS5lZGl0b3IoKS5jbGVhck1pc3NwZWxsaW5nc0FuZEJhZEdy
YW1tYXIoZW5kaW5nU2VsZWN0aW9uKCkpOwogICAgIGRlbGV0ZVNlbGVjdGlvbihmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSk7CiAKLSAgICBBU1NFUlQoZGVzdGluYXRpb24uZGVlcEVxdWl2YWxl
bnQoKS5hbmNob3JOb2RlKCktPmluRG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKGRlc3RpbmF0aW9u
LmRlZXBFcXVpdmFsZW50KCkuYW5jaG9yTm9kZSgpLT5pc0Nvbm5lY3RlZCgpKTsKICAgICBjbGVh
bnVwQWZ0ZXJEZWxldGlvbihkZXN0aW5hdGlvbik7Ci0gICAgQVNTRVJUKGRlc3RpbmF0aW9uLmRl
ZXBFcXVpdmFsZW50KCkuYW5jaG9yTm9kZSgpLT5pbkRvY3VtZW50KCkpOworICAgIEFTU0VSVChk
ZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKS0+aXNDb25uZWN0ZWQoKSk7
CiAKICAgICAvLyBBZGQgYSBiciBpZiBwcnVuaW5nIGFuIGVtcHR5IGJsb2NrIGxldmVsIGVsZW1l
bnQgY2F1c2VkIGEgY29sbGFwc2UuIEZvciBleGFtcGxlOgogICAgIC8vIGZvb14KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDY0
M2YwYjllM2EzNTdkYjRlMTliNjY4MjBjNmQwODVmNmU5OGMzNTguLjgyNDJjMjYyMWMyYjExMzcx
ZjAyMGJlZGYwYmIxMTJmOWJmMWZkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNTM2LDcgKzUzNiw3IEBAIHZvaWQgRGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlR2VuZXJhbERlbGV0ZSgpCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChtX2Rvd25zdHJlYW1FbmQuZGVwcmVj
YXRlZE5vZGUoKSAhPSBzdGFydE5vZGUgJiYgIW1fdXBzdHJlYW1TdGFydC5kZXByZWNhdGVkTm9k
ZSgpLT5pc0Rlc2NlbmRhbnRPZihtX2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUoKSkgJiYg
bV9kb3duc3RyZWFtRW5kLmFuY2hvck5vZGUoKS0+aW5Eb2N1bWVudCgpICYmIG1fZG93bnN0cmVh
bUVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID49IGNhcmV0TWluT2Zmc2V0KCptX2Rvd25z
dHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUoKSkpIHsKKyAgICAgICAgaWYgKG1fZG93bnN0cmVhbUVu
ZC5kZXByZWNhdGVkTm9kZSgpICE9IHN0YXJ0Tm9kZSAmJiAhbV91cHN0cmVhbVN0YXJ0LmRlcHJl
Y2F0ZWROb2RlKCktPmlzRGVzY2VuZGFudE9mKG1fZG93bnN0cmVhbUVuZC5kZXByZWNhdGVkTm9k
ZSgpKSAmJiBtX2Rvd25zdHJlYW1FbmQuYW5jaG9yTm9kZSgpLT5pc0Nvbm5lY3RlZCgpICYmIG1f
ZG93bnN0cmVhbUVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID49IGNhcmV0TWluT2Zmc2V0
KCptX2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUoKSkpIHsKICAgICAgICAgICAgIGlmICht
X2Rvd25zdHJlYW1FbmQuYXRMYXN0RWRpdGluZ1Bvc2l0aW9uRm9yTm9kZSgpICYmICFjYW5IYXZl
Q2hpbGRyZW5Gb3JFZGl0aW5nKCptX2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUoKSkpIHsK
ICAgICAgICAgICAgICAgICAvLyBUaGUgbm9kZSBpdHNlbGYgaXMgZnVsbHkgc2VsZWN0ZWQsIG5v
dCBqdXN0IGl0cyBjb250ZW50cy4gIERlbGV0ZSBpdC4KICAgICAgICAgICAgICAgICByZW1vdmVO
b2RlKG1fZG93bnN0cmVhbUVuZC5kZXByZWNhdGVkTm9kZSgpKTsKQEAgLTU1Myw3ICs1NTMsNyBA
QCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZUdlbmVyYWxEZWxldGUoKQogICAg
ICAgICAgICAgICAgIC8vIGtub3cgaG93IG1hbnkgY2hpbGRyZW4gdG8gcmVtb3ZlLgogICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBNYWtlIG1fdXBzdHJlYW1TdGFydCBhIHBvc2l0aW9uIHdlIHVw
ZGF0ZSBhcyB3ZSByZW1vdmUgY29udGVudCwgdGhlbiB3ZSBjYW4KICAgICAgICAgICAgICAgICAv
LyBhbHdheXMga25vdyB3aGljaCBjaGlsZHJlbiB0byByZW1vdmUuCi0gICAgICAgICAgICAgICAg
fSBlbHNlIGlmICghKHN0YXJ0Tm9kZVdhc0Rlc2NlbmRhbnRPZkVuZE5vZGUgJiYgIW1fdXBzdHJl
YW1TdGFydC5hbmNob3JOb2RlKCktPmluRG9jdW1lbnQoKSkpIHsKKyAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKCEoc3RhcnROb2RlV2FzRGVzY2VuZGFudE9mRW5kTm9kZSAmJiAhbV91cHN0cmVh
bVN0YXJ0LmFuY2hvck5vZGUoKS0+aXNDb25uZWN0ZWQoKSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdXBzdHJl
YW1TdGFydC5kZXByZWNhdGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihtX2Rvd25zdHJlYW1FbmQu
ZGVwcmVjYXRlZE5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIG4gPSBt
X3Vwc3RyZWFtU3RhcnQuZGVwcmVjYXRlZE5vZGUoKTsKQEAgLTYwNSw5ICs2MDUsOSBAQCB2b2lk
IERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6Om1lcmdlUGFyYWdyYXBocygpCiAgICAgQVNTRVJUKCFt
X3BydW5lU3RhcnRCbG9ja0lmTmVjZXNzYXJ5KTsKIAogICAgIC8vIEZJWE1FOiBEZWxldGlvbiBz
aG91bGQgYWRqdXN0IHNlbGVjdGlvbiBlbmRwb2ludHMgYXMgaXQgcmVtb3ZlcyBub2RlcyBzbyB0
aGF0IHdlIG5ldmVyIGdldCBpbnRvIHRoaXMgc3RhdGUgKDQwOTk4MzkpLgotICAgIGlmICghbV9k
b3duc3RyZWFtRW5kLmFuY2hvck5vZGUoKS0+aW5Eb2N1bWVudCgpIHx8ICFtX3Vwc3RyZWFtU3Rh
cnQuYW5jaG9yTm9kZSgpLT5pbkRvY3VtZW50KCkpCisgICAgaWYgKCFtX2Rvd25zdHJlYW1FbmQu
YW5jaG9yTm9kZSgpLT5pc0Nvbm5lY3RlZCgpIHx8ICFtX3Vwc3RyZWFtU3RhcnQuYW5jaG9yTm9k
ZSgpLT5pc0Nvbm5lY3RlZCgpKQogICAgICAgICAgcmV0dXJuOwotICAgICAgICAgCisKICAgICAv
LyBGSVhNRTogVGhlIGRlbGV0aW9uIGFsZ29yaXRobSBzaG91bGRuJ3QgbGV0IHRoaXMgaGFwcGVu
LgogICAgIGlmIChjb21wYXJlUG9zaXRpb25zKG1fdXBzdHJlYW1TdGFydCwgbV9kb3duc3RyZWFt
RW5kKSA+IDApCiAgICAgICAgIHJldHVybjsKQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lkIERlbGV0
ZVNlbGVjdGlvbkNvbW1hbmQ6Om1lcmdlUGFyYWdyYXBocygpCiAKIHZvaWQgRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZDo6cmVtb3ZlUHJldmlvdXNseVNlbGVjdGVkRW1wdHlUYWJsZVJvd3MoKQogewot
ICAgIGlmIChtX2VuZFRhYmxlUm93ICYmIG1fZW5kVGFibGVSb3ctPmluRG9jdW1lbnQoKSAmJiBt
X2VuZFRhYmxlUm93ICE9IG1fc3RhcnRUYWJsZVJvdykgeworICAgIGlmIChtX2VuZFRhYmxlUm93
ICYmIG1fZW5kVGFibGVSb3ctPmlzQ29ubmVjdGVkKCkgJiYgbV9lbmRUYWJsZVJvdyAhPSBtX3N0
YXJ0VGFibGVSb3cpIHsKICAgICAgICAgTm9kZSogcm93ID0gbV9lbmRUYWJsZVJvdy0+cHJldmlv
dXNTaWJsaW5nKCk7CiAgICAgICAgIHdoaWxlIChyb3cgJiYgcm93ICE9IG1fc3RhcnRUYWJsZVJv
dykgewogICAgICAgICAgICAgUmVmUHRyPE5vZGU+IHByZXZpb3VzUm93ID0gcm93LT5wcmV2aW91
c1NpYmxpbmcoKTsKQEAgLTY4OSw3ICs2ODksNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQ6OnJlbW92ZVByZXZpb3VzbHlTZWxlY3RlZEVtcHR5VGFibGVSb3dzKCkKICAgICB9CiAgICAg
CiAgICAgLy8gUmVtb3ZlIGVtcHR5IHJvd3MgYWZ0ZXIgdGhlIHN0YXJ0IHJvdy4KLSAgICBpZiAo
bV9zdGFydFRhYmxlUm93ICYmIG1fc3RhcnRUYWJsZVJvdy0+aW5Eb2N1bWVudCgpICYmIG1fc3Rh
cnRUYWJsZVJvdyAhPSBtX2VuZFRhYmxlUm93KSB7CisgICAgaWYgKG1fc3RhcnRUYWJsZVJvdyAm
JiBtX3N0YXJ0VGFibGVSb3ctPmlzQ29ubmVjdGVkKCkgJiYgbV9zdGFydFRhYmxlUm93ICE9IG1f
ZW5kVGFibGVSb3cpIHsKICAgICAgICAgTm9kZSogcm93ID0gbV9zdGFydFRhYmxlUm93LT5uZXh0
U2libGluZygpOwogICAgICAgICB3aGlsZSAocm93ICYmIHJvdyAhPSBtX2VuZFRhYmxlUm93KSB7
CiAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbmV4dFJvdyA9IHJvdy0+bmV4dFNpYmxpbmcoKTsK
QEAgLTY5OCw4ICs2OTgsOCBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVBy
ZXZpb3VzbHlTZWxlY3RlZEVtcHR5VGFibGVSb3dzKCkKICAgICAgICAgICAgIHJvdyA9IG5leHRS
b3cuZ2V0KCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgaWYgKG1fZW5kVGFibGVSb3cg
JiYgbV9lbmRUYWJsZVJvdy0+aW5Eb2N1bWVudCgpICYmIG1fZW5kVGFibGVSb3cgIT0gbV9zdGFy
dFRhYmxlUm93KQorCisgICAgaWYgKG1fZW5kVGFibGVSb3cgJiYgbV9lbmRUYWJsZVJvdy0+aXND
b25uZWN0ZWQoKSAmJiBtX2VuZFRhYmxlUm93ICE9IG1fc3RhcnRUYWJsZVJvdykgewogICAgICAg
ICBpZiAoaXNUYWJsZVJvd0VtcHR5KG1fZW5kVGFibGVSb3cuZ2V0KCkpKSB7CiAgICAgICAgICAg
ICAvLyBEb24ndCByZW1vdmUgbV9lbmRUYWJsZVJvdyBpZiBpdCdzIHdoZXJlIHdlJ3JlIHB1dHRp
bmcgdGhlIGVuZGluZyBzZWxlY3Rpb24uCiAgICAgICAgICAgICBpZiAoIW1fZW5kaW5nUG9zaXRp
b24uZGVwcmVjYXRlZE5vZGUoKS0+aXNEZXNjZW5kYW50T2YoKm1fZW5kVGFibGVSb3cpKSB7CkBA
IC03MDksNiArNzA5LDcgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVQcmV2
aW91c2x5U2VsZWN0ZWRFbXB0eVRhYmxlUm93cygpCiAgICAgICAgICAgICAgICAgQ29tcG9zaXRl
RWRpdENvbW1hbmQ6OnJlbW92ZU5vZGUobV9lbmRUYWJsZVJvdy5nZXQoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6
Y2FsY3VsYXRlVHlwaW5nU3R5bGVBZnRlckRlbGV0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKaW5kZXggNmRhMzA1YTMwNjE0YTI5YzdkOGUyMTM4M2Y1Nzk2YTE5YmQ5ZjgzZS4uYTdkNjhm
NjY4NDBlOTQwNDdkZjUxOWEzM2RiNDdhN2RkZjYyZGExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcApAQCAtMzQzNyw3ICszNDM3LDcgQEAgdm9pZCBFZGl0b3I6OmVkaXRvclVJVXBkYXRl
VGltZXJGaXJlZCgpCiAgICAgICAgIC8vIFdoZW4gdHlwaW5nIHdlIGNoZWNrIHNwZWxsaW5nIGVs
c2V3aGVyZSwgc28gZG9uJ3QgcmVkbyBpdCBoZXJlLgogICAgICAgICAvLyBJZiB0aGlzIGlzIGEg
Y2hhbmdlIGluIHNlbGVjdGlvbiByZXN1bHRpbmcgZnJvbSBhIGRlbGV0ZSBvcGVyYXRpb24sCiAg
ICAgICAgIC8vIG9sZFNlbGVjdGlvbiBtYXkgbm8gbG9uZ2VyIGJlIGluIHRoZSBkb2N1bWVudC4K
LSAgICAgICAgaWYgKG1fZWRpdG9yVUlVcGRhdGVUaW1lclNob3VsZENoZWNrU3BlbGxpbmdBbmRH
cmFtbWFyICYmIG9sZFNlbGVjdGlvbi5pc0NvbnRlbnRFZGl0YWJsZSgpICYmIG9sZFNlbGVjdGlv
bi5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkgJiYgb2xkU2VsZWN0aW9uLnN0YXJ0KCkuYW5jaG9y
Tm9kZSgpLT5pbkRvY3VtZW50KCkpIHsKKyAgICAgICAgaWYgKG1fZWRpdG9yVUlVcGRhdGVUaW1l
clNob3VsZENoZWNrU3BlbGxpbmdBbmRHcmFtbWFyICYmIG9sZFNlbGVjdGlvbi5pc0NvbnRlbnRF
ZGl0YWJsZSgpICYmIG9sZFNlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkgJiYgb2xk
U2VsZWN0aW9uLnN0YXJ0KCkuYW5jaG9yTm9kZSgpLT5pc0Nvbm5lY3RlZCgpKSB7CiAgICAgICAg
ICAgICBWaXNpYmxlUG9zaXRpb24gb2xkU3RhcnQob2xkU2VsZWN0aW9uLnZpc2libGVTdGFydCgp
KTsKICAgICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gb2xkQWRqYWNlbnRXb3JkcyA9IFZpc2li
bGVTZWxlY3Rpb24oc3RhcnRPZldvcmQob2xkU3RhcnQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSwg
ZW5kT2ZXb3JkKG9sZFN0YXJ0LCBSaWdodFdvcmRJZk9uQm91bmRhcnkpKTsKICAgICAgICAgICAg
IGlmIChvbGRBZGphY2VudFdvcmRzICE9IG5ld0FkamFjZW50V29yZHMpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggZjgwYjA4NGFlMDA4ZWRjZTlmMjY5
MzFiYjYzMGZlYjJiZGVjZTU1Ny4uODk5NWYxYmI5YzA0ODhlMWNkMjgyYzhkMjUyYzMxM2NkYmRj
NTFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTQx
OSw3ICs0MTksNyBAQCBzdGF0aWMgYm9vbCByZW1vdmluZ05vZGVSZW1vdmVzUG9zaXRpb24oTm9k
ZSYgbm9kZSwgY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQogCiB2b2lkIERyYWdDYXJldENvbnRy
b2xsZXI6Om5vZGVXaWxsQmVSZW1vdmVkKE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKCFoYXNDYXJl
dCgpIHx8ICFub2RlLmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIWhhc0NhcmV0KCkgfHwgIW5vZGUu
aXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFyZW1vdmluZ05vZGVS
ZW1vdmVzUG9zaXRpb24obm9kZSwgbV9wb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKSkKQEAgLTQz
NSw3ICs0MzUsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpub2RlV2lsbEJlUmVtb3ZlZChOb2Rl
JiBub2RlKQogewogICAgIC8vIFRoZXJlIGNhbid0IGJlIGEgc2VsZWN0aW9uIGluc2lkZSBhIGZy
YWdtZW50LCBzbyBpZiBhIGZyYWdtZW50J3Mgbm9kZSBpcyBiZWluZyByZW1vdmVkLAogICAgIC8v
IHRoZSBzZWxlY3Rpb24gaW4gdGhlIGRvY3VtZW50IHRoYXQgY3JlYXRlZCB0aGUgZnJhZ21lbnQg
bmVlZHMgbm8gYWRqdXN0bWVudC4KLSAgICBpZiAoaXNOb25lKCkgfHwgIW5vZGUuaW5Eb2N1bWVu
dCgpKQorICAgIGlmIChpc05vbmUoKSB8fCAhbm9kZS5pc0Nvbm5lY3RlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICByZXNwb25kVG9Ob2RlTW9kaWZpY2F0aW9uKG5vZGUsIHJlbW92aW5nTm9k
ZVJlbW92ZXNQb3NpdGlvbihub2RlLCBtX3NlbGVjdGlvbi5iYXNlKCkpLCByZW1vdmluZ05vZGVS
ZW1vdmVzUG9zaXRpb24obm9kZSwgbV9zZWxlY3Rpb24uZXh0ZW50KCkpLApAQCAtNTI0LDcgKzUy
NCw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVBvc2l0aW9uQWZ0ZXJBZG9wdGluZ1RleHRSZXBsYWNl
bWVudChQb3NpdGlvbiYgcG9zaXRpb24sIENoYXJhCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp0ZXh0
V2FzUmVwbGFjZWQoQ2hhcmFjdGVyRGF0YSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBvbGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCkKIHsKICAgICAvLyBUaGUgZnJhZ21lbnQg
Y2hlY2sgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uIFNlZSBodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8zMDA2Mi4KLSAgICBpZiAoaXNOb25lKCkgfHwgIW5vZGUgfHwgIW5v
ZGUtPmluRG9jdW1lbnQoKSkKKyAgICBpZiAoaXNOb25lKCkgfHwgIW5vZGUgfHwgIW5vZGUtPmlz
Q29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBvc2l0aW9uIGJhc2UgPSBtX3Nl
bGVjdGlvbi5iYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVu
dE91dGRlbnRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVu
dENvbW1hbmQuY3BwCmluZGV4IGU3OGUxNmM5ODc0ZWYzOWY3MTc4ZWZmM2JhZDFlZjFjMzM0MDhk
YTkuLjA3MjlmYzc3NGM0ZDJmNTgzYTJiMjgyMGVkNDJkMGI4Y2MxZDBhZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCkBAIC0yMTYsMTAg
KzIxNiwxMCBAQCB2b2lkIEluZGVudE91dGRlbnRDb21tYW5kOjpvdXRkZW50UmVnaW9uKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlNlbGVjdGlvbgogICAgICAgICAvLyBvdXRkZW50UGFy
YWdyYXBoIGNvdWxkIG1vdmUgbW9yZSB0aGFuIG9uZSBwYXJhZ3JhcGggaWYgdGhlIHBhcmFncmFw
aAogICAgICAgICAvLyBpcyBpbiBhIGxpc3QgaXRlbS4gQXMgYSByZXN1bHQsIGVuZEFmdGVyU2Vs
ZWN0aW9uIGFuZCBlbmRPZk5leHRQYXJhZ3JhcGgKICAgICAgICAgLy8gY291bGQgcmVmZXIgdG8g
cG9zaXRpb25zIG5vIGxvbmdlciBpbiB0aGUgZG9jdW1lbnQuCi0gICAgICAgIGlmIChlbmRBZnRl
clNlbGVjdGlvbi5pc05vdE51bGwoKSAmJiAhZW5kQWZ0ZXJTZWxlY3Rpb24uZGVlcEVxdWl2YWxl
bnQoKS5hbmNob3JOb2RlKCktPmluRG9jdW1lbnQoKSkKKyAgICAgICAgaWYgKGVuZEFmdGVyU2Vs
ZWN0aW9uLmlzTm90TnVsbCgpICYmICFlbmRBZnRlclNlbGVjdGlvbi5kZWVwRXF1aXZhbGVudCgp
LmFuY2hvck5vZGUoKS0+aXNDb25uZWN0ZWQoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgIGlmIChlbmRPZk5leHRQYXJhZ3JhcGguaXNOb3ROdWxsKCkgJiYgIWVuZE9mTmV4dFBhcmFn
cmFwaC5kZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKS0+aW5Eb2N1bWVudCgpKSB7CisgICAg
ICAgIGlmIChlbmRPZk5leHRQYXJhZ3JhcGguaXNOb3ROdWxsKCkgJiYgIWVuZE9mTmV4dFBhcmFn
cmFwaC5kZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKS0+aXNDb25uZWN0ZWQoKSkgewogICAg
ICAgICAgICAgZW5kT2ZDdXJyZW50UGFyYWdyYXBoID0gZW5kaW5nU2VsZWN0aW9uKCkuZW5kKCk7
CiAgICAgICAgICAgICBlbmRPZk5leHRQYXJhZ3JhcGggPSBlbmRPZlBhcmFncmFwaChlbmRPZkN1
cnJlbnRQYXJhZ3JhcGgubmV4dCgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKaW5kZXggZGEzOWYyNDg3ZDBiN2Q4
ZDQ0ZjlmN2ZiYzAxMWU3NmJlOGQwNzVkNy4uODEyYzBiNDZmODJmYzZhNzUzZDBlZDBiNTg4ZDMw
YzI5OTAwZjExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5l
QnJlYWtDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVC
cmVha0NvbW1hbmQuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtD
b21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgICAgIGRlbGV0ZUluc2lnbmlmaWNhbnRUZXh0RG93
bnN0cmVhbShlbmRpbmdQb3NpdGlvbik7CiAgICAgICAgICAgICBBU1NFUlQoIXRleHROb2RlLnJl
bmRlcmVyKCkgfHwgdGV4dE5vZGUucmVuZGVyZXIoKS0+c3R5bGUoKS5jb2xsYXBzZVdoaXRlU3Bh
Y2UoKSk7CiAgICAgICAgICAgICAvLyBEZWxldGluZyBpbnNpZ25pZmljYW50IHdoaXRlc3BhY2Ug
d2lsbCByZW1vdmUgdGV4dE5vZGUgaWYgaXQgY29udGFpbnMgbm90aGluZyBidXQgaW5zaWduaWZp
Y2FudCB3aGl0ZXNwYWNlLgotICAgICAgICAgICAgaWYgKHRleHROb2RlLmluRG9jdW1lbnQoKSkK
KyAgICAgICAgICAgIGlmICh0ZXh0Tm9kZS5pc0Nvbm5lY3RlZCgpKQogICAgICAgICAgICAgICAg
IGluc2VydFRleHRJbnRvTm9kZSgmdGV4dE5vZGUsIDAsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmco
KSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8VGV4dD4gbmJz
cE5vZGUgPSBkb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKG5vbkJyZWFraW5nU3BhY2VTdHJpbmco
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCmluZGV4
IDNjMmFkYjRjMDEwYTdjZjNmZDRmMjYxYjZlMzA5ZDMwYmIyMzI3NjkuLjg5NGE3Y2ZmYzE2NDcz
MWUwMTVjN2U2OTIzYmRhMTQzODNjYWNhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0TGlzdENvbW1hbmQuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBJbnNlcnRMaXN0
Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgICAgICAgICAgLy8gaW5maW5pdGUgbG9vcCBhbmQg
YmVjYXVzZSB0aGVyZSBpcyBubyBtb3JlIHdvcmsgdG8gYmUgZG9uZS4KICAgICAgICAgICAgICAg
ICAvLyBGSVhNRSg8cmRhcjovL3Byb2JsZW0vNTk4Mzk3ND4pOiBUaGUgZW5kaW5nU2VsZWN0aW9u
KCkgbWF5IGJlIGluY29ycmVjdCBoZXJlLiAgQ29tcHV0ZSAKICAgICAgICAgICAgICAgICAvLyB0
aGUgbmV3IGxvY2F0aW9uIG9mIGVuZE9mU2VsZWN0aW9uIGFuZCB1c2UgaXQgYXMgdGhlIGVuZCBv
ZiB0aGUgbmV3IHNlbGVjdGlvbi4KLSAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0T2ZMYXN0UGFy
YWdyYXBoLmRlZXBFcXVpdmFsZW50KCkuYW5jaG9yTm9kZSgpLT5pbkRvY3VtZW50KCkpCisgICAg
ICAgICAgICAgICAgaWYgKCFzdGFydE9mTGFzdFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLmFu
Y2hvck5vZGUoKS0+aXNDb25uZWN0ZWQoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihzdGFydE9mQ3VycmVudFBhcmFncmFw
aCk7CiAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5
Rm9yU2luZ2xlUGFyYWdyYXBoKGJvb2wgZm9yY2VDcmVhdGVMaXN0LCBjb25zdCBIVAogICAgICAg
ICAgICAgLy8gTWFudWFsbHkgcmVtb3ZlIGxpc3ROb2RlIGJlY2F1c2UgbW92ZVBhcmFncmFwaFdp
dGhDbG9uZXMgc29tZXRpbWVzIGxlYXZlcyBpdCBiZWhpbmQgaW4gdGhlIGRvY3VtZW50LgogICAg
ICAgICAgICAgLy8gU2VlIHRoZSBidWcgMzM2NjggYW5kIGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5z
ZXJ0LWxpc3Qtb3JwaGFuZWQtaXRlbS13aXRoLW5lc3RlZC1saXN0cy5odG1sLgogICAgICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgbWlnaHQgYmUgYSBidWcgaW4gbW92ZVBhcmFncmFwaFdpdGhDbG9u
ZXMgb3IgZGVsZXRlU2VsZWN0aW9uLgotICAgICAgICAgICAgaWYgKGxpc3ROb2RlICYmIGxpc3RO
b2RlLT5pbkRvY3VtZW50KCkpCisgICAgICAgICAgICBpZiAobGlzdE5vZGUgJiYgbGlzdE5vZGUt
PmlzQ29ubmVjdGVkKCkpCiAgICAgICAgICAgICAgICAgcmVtb3ZlTm9kZShsaXN0Tm9kZSk7CiAK
ICAgICAgICAgICAgIG5ld0xpc3QgPSBtZXJnZVdpdGhOZWlnaGJvcmluZ0xpc3RzKG5ld0xpc3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAppbmRleCBh
MmZkNmFkODk3ZGU0YzllOGY4ZjM4NDIxNzk5MzU3NWI1MDMzMGQ2Li4zNmM5ZjM4OTI5M2JkMzRi
MjlkYmIwM2QwMzk5MjcxMGVlZmI5ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0lu
c2VydFRleHRDb21tYW5kLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgSW5zZXJ0VGV4dENv
bW1hbmQ6OmRvQXBwbHkoKQogICAgIC8vIGFuZCBzbyBkZWxldGVJbnNpZ25pZmljYW50VGV4dCBj
b3VsZCByZW1vdmUgaXQuICBTYXZlIHRoZSBwb3NpdGlvbiBiZWZvcmUgdGhlIG5vZGUgaW4gY2Fz
ZSB0aGF0IGhhcHBlbnMuCiAgICAgUG9zaXRpb24gcG9zaXRpb25CZWZvcmVTdGFydE5vZGUocG9z
aXRpb25JblBhcmVudEJlZm9yZU5vZGUoc3RhcnRQb3NpdGlvbi5jb250YWluZXJOb2RlKCkpKTsK
ICAgICBkZWxldGVJbnNpZ25pZmljYW50VGV4dChzdGFydFBvc2l0aW9uLnVwc3RyZWFtKCksIHN0
YXJ0UG9zaXRpb24uZG93bnN0cmVhbSgpKTsKLSAgICBpZiAoIXN0YXJ0UG9zaXRpb24uYW5jaG9y
Tm9kZSgpLT5pbkRvY3VtZW50KCkpCisgICAgaWYgKCFzdGFydFBvc2l0aW9uLmFuY2hvck5vZGUo
KS0+aXNDb25uZWN0ZWQoKSkKICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHBvc2l0aW9uQmVmb3Jl
U3RhcnROb2RlOwogICAgIGlmICghc3RhcnRQb3NpdGlvbi5pc0NhbmRpZGF0ZSgpKQogICAgICAg
ICBzdGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbi5kb3duc3RyZWFtKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDg4MWIxMWE0
YTliNDk4ZGQ0ZGIwMzViMDQ1YmM1OWIwYjY2ZTA5NjYuLmRiOTEwY2FmMWYwYWQyNDkxMzY2MTFi
MDAwMTk5YzI4ZjFkYzkxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNl
bGVjdGlvbkNvbW1hbmQuY3BwCkBAIC03MiwxNCArNzIsMTQgQEAgdm9pZCBNb3ZlU2VsZWN0aW9u
Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgLy8gc2V0IHRoZSBkZXN0aW5hdGlvbiB0byB0aGUgZW5k
aW5nIHBvaW50IGFmdGVyIHRoZSBkZWxldGlvbi4KICAgICAvLyBGaXhlczogPHJkYXI6Ly9wcm9i
bGVtLzM5MTA0MjU+IFJFR1JFU1NJT04gKE1haWwpOiBDcmFzaCBpbiBSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDsgCiAgICAgLy8gICAgICAgIHNlbGVjdGlvbiBpcyBlbXB0eSwgbGVhZGluZyB0byBu
dWxsIGRlcmVmCi0gICAgaWYgKCFwb3MuYW5jaG9yTm9kZSgpLT5pbkRvY3VtZW50KCkpCisgICAg
aWYgKCFwb3MuYW5jaG9yTm9kZSgpLT5pc0Nvbm5lY3RlZCgpKQogICAgICAgICBwb3MgPSBlbmRp
bmdTZWxlY3Rpb24oKS5zdGFydCgpOwogCiAgICAgY2xlYW51cEFmdGVyRGVsZXRpb24ocG9zKTsK
IAogICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHBvcywgZW5kaW5nU2Vs
ZWN0aW9uKCkuYWZmaW5pdHkoKSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7
CiAgICAgc2V0U3RhcnRpbmdTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkpOwotICAgIGlmICgh
cG9zLmFuY2hvck5vZGUoKS0+aW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKCFwb3MuYW5jaG9yTm9k
ZSgpLT5pc0Nvbm5lY3RlZCgpKSB7CiAgICAgICAgIC8vIERvY3VtZW50IHdhcyBtb2RpZmllZCBv
dXQgZnJvbSB1bmRlciB1cy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKaW5kZXgg
Yjk2YzNhNjJlMjczNzQxYjA0MTIxOTUzZTUyMmEyMjUxM2E4NGEwOS4uZTFkMDIyM2UzZDdlNzAw
YjEyNTA0MjIyZmMwNDJjMGI3MDZjNTY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAg
UmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQ6OlJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kKFBh
c3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGUKIAogc3RhdGljIHZvaWQgc3dhcEluTm9kZVByZXNlcnZp
bmdBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oSFRNTEVsZW1lbnQmIG5ld05vZGUsIEhUTUxFbGVtZW50
JiBub2RlVG9SZXBsYWNlKQogewotICAgIEFTU0VSVChub2RlVG9SZXBsYWNlLmluRG9jdW1lbnQo
KSk7CisgICAgQVNTRVJUKG5vZGVUb1JlcGxhY2UuaXNDb25uZWN0ZWQoKSk7CiAgICAgUmVmUHRy
PENvbnRhaW5lck5vZGU+IHBhcmVudE5vZGUgPSBub2RlVG9SZXBsYWNlLnBhcmVudE5vZGUoKTsK
IAogICAgIC8vIEZJWE1FOiBGaXggdGhpcyB0byBzZW5kIHRoZSBwcm9wZXIgTXV0YXRpb25SZWNv
cmRzIHdoZW4gTXV0YXRpb25PYnNlcnZlcnMgYXJlIHByZXNlbnQuCkBAIC02MSw3ICs2MSw3IEBA
IHN0YXRpYyB2b2lkIHN3YXBJbk5vZGVQcmVzZXJ2aW5nQXR0cmlidXRlc0FuZENoaWxkcmVuKEhU
TUxFbGVtZW50JiBuZXdOb2RlLCBIVE1MCiAKIHZvaWQgUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1h
bmQ6OmRvQXBwbHkoKQogewotICAgIGlmICghbV9lbGVtZW50VG9SZXBsYWNlLT5pbkRvY3VtZW50
KCkpCisgICAgaWYgKCFtX2VsZW1lbnRUb1JlcGxhY2UtPmlzQ29ubmVjdGVkKCkpCiAgICAgICAg
IHJldHVybjsKICAgICBpZiAoIW1fc3BhbkVsZW1lbnQpCiAgICAgICAgIG1fc3BhbkVsZW1lbnQg
PSBIVE1MU3BhbkVsZW1lbnQ6OmNyZWF0ZShtX2VsZW1lbnRUb1JlcGxhY2UtPmRvY3VtZW50KCkp
OwpAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kOjpkb0Fw
cGx5KCkKIAogdm9pZCBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZDo6ZG9VbmFwcGx5KCkKIHsK
LSAgICBpZiAoIW1fc3BhbkVsZW1lbnQtPmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIW1fc3BhbkVs
ZW1lbnQtPmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBzd2FwSW5Ob2RlUHJl
c2VydmluZ0F0dHJpYnV0ZXNBbmRDaGlsZHJlbigqbV9lbGVtZW50VG9SZXBsYWNlLCAqbV9zcGFu
RWxlbWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQuY3BwCmluZGV4IGRmNmU5YjgxYTAzNDQ5ODliNzUzN2QwYmZmZWEzYzVjMTY4
NWZkM2EuLjJlZTM3MzI4OWY1YTY3ZDE1YWQ3ODVlZDU5MTE1ZDA5NWIyMmZiZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBA
IC0xMTIwLDcgKzExMjAsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5
KCkKICAgICB9CiAKICAgICAvLyBNdXRhdGlvbiBldmVudHMgKGJ1ZyAyMjYzNCkgbWF5IGhhdmUg
YWxyZWFkeSByZW1vdmVkIHRoZSBpbnNlcnRlZCBjb250ZW50Ci0gICAgaWYgKCFyZWZOb2RlLT5p
bkRvY3VtZW50KCkpCisgICAgaWYgKCFyZWZOb2RlLT5pc0Nvbm5lY3RlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBib29sIHBsYWluVGV4dEZyYWdtZW50ID0gaXNQbGFpblRleHRNYXJrdXAo
cmVmTm9kZS5nZXQoKSk7CkBAIC0xMTMyLDcgKzExMzIsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgaW5zZXJ0ZWROb2Rlcy5yZXNwb25kVG9Ob2Rl
SW5zZXJ0aW9uKG5vZGUuZ2V0KCkpOwogCiAgICAgICAgIC8vIE11dGF0aW9uIGV2ZW50cyAoYnVn
IDIyNjM0KSBtYXkgaGF2ZSBhbHJlYWR5IHJlbW92ZWQgdGhlIGluc2VydGVkIGNvbnRlbnQKLSAg
ICAgICAgaWYgKCFub2RlLT5pbkRvY3VtZW50KCkpCisgICAgICAgIGlmICghbm9kZS0+aXNDb25u
ZWN0ZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICByZWZOb2RlID0gbm9kZTsK
QEAgLTExNDcsNyArMTE0Nyw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBw
bHkoKQogICAgICAgICBoYW5kbGVTdHlsZVNwYW5zKGluc2VydGVkTm9kZXMpOwogCiAgICAgLy8g
TXV0YXRpb24gZXZlbnRzIChidWcgMjAxNjEpIG1heSBoYXZlIGFscmVhZHkgcmVtb3ZlZCB0aGUg
aW5zZXJ0ZWQgY29udGVudAotICAgIGlmICghaW5zZXJ0ZWROb2Rlcy5maXJzdE5vZGVJbnNlcnRl
ZCgpIHx8ICFpbnNlcnRlZE5vZGVzLmZpcnN0Tm9kZUluc2VydGVkKCktPmluRG9jdW1lbnQoKSkK
KyAgICBpZiAoIWluc2VydGVkTm9kZXMuZmlyc3ROb2RlSW5zZXJ0ZWQoKSB8fCAhaW5zZXJ0ZWRO
b2Rlcy5maXJzdE5vZGVJbnNlcnRlZCgpLT5pc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZkluc2VydGVkQ29udGVudCA9IGZpcnN0UG9z
aXRpb25Jbk9yQmVmb3JlTm9kZShpbnNlcnRlZE5vZGVzLmZpcnN0Tm9kZUluc2VydGVkKCkpOwpA
QCAtMTIwMyw3ICsxMjAzLDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBs
eSgpCiAgICAgICAgIGlmIChzdGFydE9mUGFyYWdyYXBoKGVuZE9mSW5zZXJ0ZWRDb250ZW50KSA9
PSBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlKSB7CiAgICAgICAgICAgICBpbnNlcnROb2RlQXQoSFRN
TEJSRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLCBlbmRPZkluc2VydGVkQ29udGVudC5kZWVw
RXF1aXZhbGVudCgpKTsKICAgICAgICAgICAgIC8vIE11dGF0aW9uIGV2ZW50cyAoYnVnIDIyNjM0
KSB0cmlnZ2VyZWQgYnkgaW5zZXJ0aW5nIHRoZSA8YnI+IG1pZ2h0IGhhdmUgcmVtb3ZlZCB0aGUg
Y29udGVudCB3ZSdyZSBhYm91dCB0byBtb3ZlCi0gICAgICAgICAgICBpZiAoIXN0YXJ0T2ZQYXJh
Z3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JOb2RlKCktPmluRG9jdW1lbnQoKSkK
KyAgICAgICAgICAgIGlmICghc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgp
LmFuY2hvck5vZGUoKS0+aXNDb25uZWN0ZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMTI3OSw5ICsxMjc5LDkgQEAgUmVmUHRyPERhdGFUcmFuc2Zlcj4gUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdAogCiBi
b29sIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpzaG91bGRSZW1vdmVFbmRCUihOb2RlKiBlbmRC
UiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBvcmlnaW5hbFZpc1Bvc0JlZm9yZUVuZEJSKQogewot
ICAgIGlmICghZW5kQlIgfHwgIWVuZEJSLT5pbkRvY3VtZW50KCkpCisgICAgaWYgKCFlbmRCUiB8
fCAhZW5kQlItPmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
CisKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyhwb3NpdGlvbkJlZm9yZU5vZGUoZW5k
QlIpKTsKICAgICAKICAgICAvLyBEb24ndCByZW1vdmUgdGhlIGJyIGlmIG5vdGhpbmcgd2FzIGlu
c2VydGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
CmluZGV4IDAyM2I3NDQ1OWY2NTA2MTdhMjhhNDI3YTUzMTlhYTRmMjIzM2Q5MGYuLjUzMjQyYmJh
OGRhYmVlMDZkMWQ0YTI0ODhjMmVjNWQ5MThhNWQyOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRpb25Q
b2ludCkKICAgICBpZiAobV9mb3JtICYmIGVsZW1lbnQucm9vdEVsZW1lbnQoKSAhPSBtX2Zvcm0t
PnJvb3RFbGVtZW50KCkpCiAgICAgICAgIHNldEZvcm0obnVsbHB0cik7CiAKLSAgICBpZiAoIWlu
c2VydGlvblBvaW50LmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIWluc2VydGlvblBvaW50LmlzQ29u
bmVjdGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybUF0dHIpKQpAQCAtODYsNyArODYsNyBAQCB2b2lk
IEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIGluc2Vy
dGlvblBvaW50KQogfQogCiAvLyBDb21wdXRlIHRoZSBoaWdoZXN0IGFuY2VzdG9yIGluc3RlYWQg
b2YgY2FsbGluZyBOb2RlOjpyb290Tm9kZSBpbiByZW1vdmVkRnJvbSAvIGZvcm1SZW1vdmVkRnJv
bVRyZWUKLS8vIHNpbmNlIGluRG9jdW1lbnQgZmxhZyBvbiBzb21lIGZvcm0gYXNzb2NpYXRlZCBl
bGVtZW50cyBtYXkgbm90IGhhdmUgYmVlbiB1cGRhdGVkIHlldC4KKy8vIHNpbmNlIGlzQ29ubmVj
dGVkIGZsYWcgb24gc29tZSBmb3JtIGFzc29jaWF0ZWQgZWxlbWVudHMgbWF5IG5vdCBoYXZlIGJl
ZW4gdXBkYXRlZCB5ZXQuCiBzdGF0aWMgTm9kZSogY29tcHV0ZVJvb3ROb2RlKE5vZGUmIG5vZGUp
CiB7CiAgICAgTm9kZSogY3VycmVudCA9ICZub2RlOwpAQCAtOTksNyArOTksNyBAQCBzdGF0aWMg
Tm9kZSogY29tcHV0ZVJvb3ROb2RlKE5vZGUmIG5vZGUpCiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAg
SFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBhc0hUTUxFbGVtZW50KCk7Ci0gICAgaWYgKGluc2VydGlv
blBvaW50LmluRG9jdW1lbnQoKSAmJiBlbGVtZW50Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oZm9ybUF0dHIpKQorICAgIGlmIChpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgp
ICYmIGVsZW1lbnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JtQXR0cikp
CiAgICAgICAgIG1fZm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gbnVsbHB0cjsKICAgICAv
LyBJZiB0aGUgZm9ybSBhbmQgZWxlbWVudCBhcmUgYm90aCBpbiB0aGUgc2FtZSB0cmVlLCBwcmVz
ZXJ2ZSB0aGUgY29ubmVjdGlvbiB0byB0aGUgZm9ybS4KICAgICAvLyBPdGhlcndpc2UsIG51bGwg
b3V0IG91ciBmb3JtIGFuZCByZW1vdmUgb3Vyc2VsdmVzIGZyb20gdGhlIGZvcm0ncyBsaXN0IG9m
IGVsZW1lbnRzLgpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50
OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIEhUTUxGb3JtRWxl
bWVudCogRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpmaW5kQXNzb2NpYXRlZEZvcm0oY29uc3QgSFRN
TEVsZW1lbnQqIGVsZW1lbnQsIEhUTUxGb3JtRWxlbWVudCogY3VycmVudEFzc29jaWF0ZWRGb3Jt
KQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUlkKGVsZW1lbnQtPmF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybUF0dHIpKTsKLSAgICBpZiAoIWZvcm1JZC5pc051bGwo
KSAmJiBlbGVtZW50LT5pbkRvY3VtZW50KCkpIHsKKyAgICBpZiAoIWZvcm1JZC5pc051bGwoKSAm
JiBlbGVtZW50LT5pc0Nvbm5lY3RlZCgpKSB7CiAgICAgICAgIC8vIFRoZSBIVE1MNSBzcGVjIHNh
eXMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgYXNzb2NpYXRlZCB3aXRoCiAgICAgICAgIC8v
IHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBkb2N1bWVudCB0byBoYXZlIGFuIElEIHRoYXQgZXF1
YWwgdG8KICAgICAgICAgLy8gdGhlIHZhbHVlIG9mIGZvcm0gYXR0cmlidXRlLCBzbyB3ZSBwdXQg
dGhlIHJlc3VsdCBvZgpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50OjpyZXNldEZvcm1Pd25lcigpCiAgICAgSFRNTEZvcm1FbGVtZW50KiBvcmlnaW5hbEZvcm0g
PSBtX2Zvcm07CiAgICAgc2V0Rm9ybShmaW5kQXNzb2NpYXRlZEZvcm0oJmFzSFRNTEVsZW1lbnQo
KSwgbV9mb3JtKSk7CiAgICAgSFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBhc0hUTUxFbGVtZW50KCk7
Ci0gICAgaWYgKG1fZm9ybSAmJiBtX2Zvcm0gIT0gb3JpZ2luYWxGb3JtICYmIG1fZm9ybS0+aW5E
b2N1bWVudCgpKQorICAgIGlmIChtX2Zvcm0gJiYgbV9mb3JtICE9IG9yaWdpbmFsRm9ybSAmJiBt
X2Zvcm0tPmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5kaWRBc3Nv
Y2lhdGVGb3JtQ29udHJvbCgmZWxlbWVudCk7CiB9CiAKQEAgLTE4MiwxMiArMTgyLDEyIEBAIHZv
aWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRlQ2hhbmdlZCgpCiAgICAgICAg
IC8vIFRoZSBmb3JtIGF0dHJpYnV0ZSByZW1vdmVkLiBXZSBuZWVkIHRvIHJlc2V0IGZvcm0gb3du
ZXIgaGVyZS4KICAgICAgICAgSFRNTEZvcm1FbGVtZW50KiBvcmlnaW5hbEZvcm0gPSBtX2Zvcm07
CiAgICAgICAgIHNldEZvcm0oSFRNTEZvcm1FbGVtZW50OjpmaW5kQ2xvc2VzdEZvcm1BbmNlc3Rv
cihlbGVtZW50KSk7Ci0gICAgICAgIGlmIChtX2Zvcm0gJiYgbV9mb3JtICE9IG9yaWdpbmFsRm9y
bSAmJiBtX2Zvcm0tPmluRG9jdW1lbnQoKSkKKyAgICAgICAgaWYgKG1fZm9ybSAmJiBtX2Zvcm0g
IT0gb3JpZ2luYWxGb3JtICYmIG1fZm9ybS0+aXNDb25uZWN0ZWQoKSkKICAgICAgICAgICAgIGVs
ZW1lbnQuZG9jdW1lbnQoKS5kaWRBc3NvY2lhdGVGb3JtQ29udHJvbCgmZWxlbWVudCk7CiAgICAg
ICAgIG1fZm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gbnVsbHB0cjsKICAgICB9IGVsc2Ug
ewogICAgICAgICByZXNldEZvcm1Pd25lcigpOwotICAgICAgICBpZiAoZWxlbWVudC5pbkRvY3Vt
ZW50KCkpCisgICAgICAgIGlmIChlbGVtZW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgICAgICBy
ZXNldEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcAppbmRleCA2MTRhMGNlZGFjYzA3YjM4M2Q0ZDIxYmE1
NjM4NTUwN2I4N2FhZjE0Li5mY2ZkNjdiNGQ5YzY1YzM2NWNiOTJjODE0NzY0ZGVlYWM1NTZhNGM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCkBAIC01NCw3ICs1NCw3
IEBAIHZvaWQgSFRNTEJhc2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25S
ZXF1ZXN0IEhUTUxCYXNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIGluc2Vy
dGlvblBvaW50KQogewogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9p
bnQpOwotICAgIGlmIChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkpCisgICAgaWYgKGluc2Vy
dGlvblBvaW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIGRvY3VtZW50KCkucHJvY2Vzc0Jhc2VF
bGVtZW50KCk7CiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CkBAIC02Miw3ICs2Miw3IEBA
IE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTEJhc2VFbGVtZW50OjppbnNl
cnRlZEludG8oQ29udGFpbmVyTm9kZSYKIHZvaWQgSFRNTEJhc2VFbGVtZW50OjpyZW1vdmVkRnJv
bShDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBIVE1MRWxlbWVudDo6cmVt
b3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwotICAgIGlmIChpbnNlcnRpb25Qb2ludC5pbkRvY3Vt
ZW50KCkpCisgICAgaWYgKGluc2VydGlvblBvaW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIGRv
Y3VtZW50KCkucHJvY2Vzc0Jhc2VFbGVtZW50KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEJvZHlFbGVtZW50LmNwcAppbmRleCBkMTVlMTY1ZjM3NWRjNTgxMDBkMDFmZDM4MjY2ZTc0ODgw
YjgxYTYxLi5mYjg4NDFmMzhiOGI0ODBlNWMyYzQ0OGZlMmRkZDcwMmY2ZjIwYjE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgdm9p
ZCBIVE1MQm9keUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmkKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3Qg
SFRNTEJvZHlFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9p
bnQpCiB7CiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50byhpbnNlcnRpb25Qb2ludCk7Ci0g
ICAgaWYgKCFpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkpCisgICAgaWYgKCFpbnNlcnRpb25Q
b2ludC5pc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIAogICAg
IC8vIEZJWE1FOiBJdCdzIHN1cnByaXNpbmcgdGhpcyBpcyB3ZWIgY29tcGF0aWJsZSBzaW5jZSBp
dCBtZWFucyBhIG1hcmdpbndpZHRoIGFuZCBtYXJnaW5oZWlnaHQgYXR0cmlidXRlIGNhbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCmluZGV4IDQ4MDEyNmI2NTE2YjdlNzk1MzhiNjI5
ZmI4NmFlYzAyYzkxNzJmMjQuLjY0M2EyZTcwMmM1OTEzZjFlZTM2ZDlhMDk0NzIwNjM5NjViMDAy
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKQEAgLTExMSw3ICsxMTEsNyBA
QCBwcm90ZWN0ZWQ6CiAKIGlubGluZSBDb250YWluZXJOb2RlJiBIVE1MQ29sbGVjdGlvbjo6cm9v
dE5vZGUoKSBjb25zdAogewotICAgIGlmIChpc1Jvb3RlZEF0RG9jdW1lbnQoKSAmJiBvd25lck5v
ZGUoKS5pbkRvY3VtZW50KCkpCisgICAgaWYgKGlzUm9vdGVkQXREb2N1bWVudCgpICYmIG93bmVy
Tm9kZSgpLmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybiBvd25lck5vZGUoKS5kb2N1bWVu
dCgpOwogCiAgICAgcmV0dXJuIG93bmVyTm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcAppbmRleCBmODFlZjZhMGEyYWRkZjIwZjVjMjY1ZmI3ZWRhMjliMmFiZmUzNDg2Li4yNjU0
ZmJiZDk1NGIxOGZmNzI2Mzk2YjVjYjkyYTE3MjYzYjJkNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcApAQCAtNTE0LDcgKzUxNCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxF
bGVtZW50OjpzZXRJbm5lclRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIC8vIEZJWE1FOiBD
YW4gdGhlIHJlbmRlcmVyIGJlIG91dCBvZiBkYXRlIGhlcmU/IERvIHdlIG5lZWQgdG8gY2FsbCB1
cGRhdGVTdHlsZUlmTmVlZGVkPwogICAgIC8vIEZvciBleGFtcGxlLCBmb3IgdGhlIGNvbnRlbnRz
IG9mIHRleHRhcmVhIGVsZW1lbnRzIHRoYXQgYXJlIGRpc3BsYXk6bm9uZT8KICAgICBhdXRvKiBy
ID0gcmVuZGVyZXIoKTsKLSAgICBpZiAoKHIgJiYgci0+c3R5bGUoKS5wcmVzZXJ2ZU5ld2xpbmUo
KSkgfHwgKGluRG9jdW1lbnQoKSAmJiBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCgpKSkg
eworICAgIGlmICgociAmJiByLT5zdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpKSB8fCAoaXNDb25u
ZWN0ZWQoKSAmJiBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCgpKSkgewogICAgICAgICBp
ZiAoIXRleHQuY29udGFpbnMoJ1xyJykpIHsKICAgICAgICAgICAgIHJlcGxhY2VBbGxDaGlsZHJl
bihkb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKHRleHQpKTsKICAgICAgICAgICAgIHJldHVybiB7
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApp
bmRleCA2MmMyODYxN2FlMzVkZTY3MzJmZmEwNjYzMzhmZTMxODE2NTQ2Y2E4Li5hOWMxNDRkYWRj
YjJlMjc0OTBiMDdmNmEyNjkxMDQzNDQ4MGQ5YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMg
Ym9vbCBzaG91bGRBdXRvZm9jdXMoSFRNTEZvcm1Db250cm9sRWxlbWVudCogZWxlbWVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihhdXRvZm9jdXNBdHRyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICghZWxlbWVudC0+aW5Eb2N1bWVudCgpIHx8ICFlbGVtZW50LT5kb2N1bWVudCgpLnJl
bmRlclZpZXcoKSkKKyAgICBpZiAoIWVsZW1lbnQtPmlzQ29ubmVjdGVkKCkgfHwgIWVsZW1lbnQt
PmRvY3VtZW50KCkucmVuZGVyVmlldygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KGVsZW1lbnQtPmRvY3VtZW50KCkuaXNTYW5kYm94ZWQoU2FuZGJveEF1dG9tYXRpY0ZlYXR1cmVz
KSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBtZXNzYWdlIHNob3VsZCBiZSBtb3ZlZCBvZmYg
dGhlIGNvbnNvbGUgb25jZSBhIHNvbHV0aW9uIHRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDMyNzQgZXhpc3RzLgpAQCAtNDgzLDcgKzQ4Myw3IEBAIGJvb2wgSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6Y2hlY2tWYWxpZGl0eShWZWN0b3I8UmVmUHRyPEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ+CiAgICAgUmVmPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOwogICAgIFJlZjxEb2N1bWVudD4gb3JpZ2luYWxEb2N1bWVudChkb2N1bWVu
dCgpKTsKICAgICBib29sIG5lZWRzRGVmYXVsdEFjdGlvbiA9IGRpc3BhdGNoRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuaW52YWxpZEV2ZW50LCBmYWxzZSwgdHJ1ZSkpOwotICAgIGlm
IChuZWVkc0RlZmF1bHRBY3Rpb24gJiYgdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzICYmIGluRG9j
dW1lbnQoKSAmJiBvcmlnaW5hbERvY3VtZW50LnB0cigpID09ICZkb2N1bWVudCgpKQorICAgIGlm
IChuZWVkc0RlZmF1bHRBY3Rpb24gJiYgdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzICYmIGlzQ29u
bmVjdGVkKCkgJiYgb3JpZ2luYWxEb2N1bWVudC5wdHIoKSA9PSAmZG9jdW1lbnQoKSkKICAgICAg
ICAgdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzLT5hcHBlbmQodGhpcyk7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQpAQCAtNTAxLDcgKzUwMSw3IEBAIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6
cmVwb3J0VmFsaWRpdHkoKQogICAgIC8vIGhhcyAhcmVuZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSBh
c3NlcnRpb24uCiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVz
aGVldHMoKTsKIAotICAgIGlmIChpbkRvY3VtZW50KCkgJiYgaXNGb2N1c2FibGUoKSkgeworICAg
IGlmIChpc0Nvbm5lY3RlZCgpICYmIGlzRm9jdXNhYmxlKCkpIHsKICAgICAgICAgZm9jdXNBbmRT
aG93VmFsaWRhdGlvbk1lc3NhZ2UoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhT
dGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRo
U3RhdGUuY3BwCmluZGV4IGUxYzQ3Y2YxMDNlNzVlZGNjNTJmMTE0ZmEzNjY3YWRjMTU1Y2Q3MDku
LjY3NmIyN2NhNDA4NjU4MzU1M2M3YTA0Zjk5MGUzOWU1YTEwOTI5NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmNw
cApAQCAtNDIsMTQgKzQyLDE0IEBAIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6On5I
VE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKCkKIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZp
Y2F0aW9uUmVxdWVzdCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjppbnNlcnRlZElu
dG8oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7Ci0gICAgaWYgKGluc2VydGlvblBv
aW50LmluRG9jdW1lbnQoKSAmJiAhY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKKyAgICBpZiAoaW5z
ZXJ0aW9uUG9pbnQuaXNDb25uZWN0ZWQoKSAmJiAhY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKICAg
ICAgICAgZG9jdW1lbnQoKS5mb3JtQ29udHJvbGxlcigpLnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRo
U3RhdGUodGhpcyk7CiAgICAgcmV0dXJuIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6Omluc2VydGVk
SW50byhpbnNlcnRpb25Qb2ludCk7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudFdp
dGhTdGF0ZTo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7Ci0g
ICAgaWYgKGluc2VydGlvblBvaW50LmluRG9jdW1lbnQoKSAmJiAhY29udGFpbmluZ1NoYWRvd1Jv
b3QoKSAmJiAhaW5zZXJ0aW9uUG9pbnQuY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKKyAgICBpZiAo
aW5zZXJ0aW9uUG9pbnQuaXNDb25uZWN0ZWQoKSAmJiAhY29udGFpbmluZ1NoYWRvd1Jvb3QoKSAm
JiAhaW5zZXJ0aW9uUG9pbnQuY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKICAgICAgICAgZG9jdW1l
bnQoKS5mb3JtQ29udHJvbGxlcigpLnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhTdGF0ZSh0aGlz
KTsKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2lu
dCk7CiB9CkBAIC02NCw3ICs2NCw3IEBAIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhT
dGF0ZTo6c2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3QKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxl
bWVudFdpdGhTdGF0ZTo6c2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKCkgY29u
c3QKIHsKICAgICAvLyBXZSBkb24ndCBzYXZlL3Jlc3RvcmUgY29udHJvbCBzdGF0ZSBpbiBhIGZv
cm0gd2l0aCBhdXRvY29tcGxldGU9b2ZmLgotICAgIHJldHVybiBpbkRvY3VtZW50KCkgJiYgc2hv
dWxkQXV0b2NvbXBsZXRlKCk7CisgICAgcmV0dXJuIGlzQ29ubmVjdGVkKCkgJiYgc2hvdWxkQXV0
b2NvbXBsZXRlKCk7CiB9CiAKIEZvcm1Db250cm9sU3RhdGUgSFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZTo6c2F2ZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDY0MGUzM2VmM2M4OTQyYWI4ZGQ5MTE4MzBmZTY4
MGZjZWNiZWUwYmUuLmQ2MmZjZjQyYzk2M2ExZmMzNThhYjU4ZWRjZWJhNjU4MzJjNjhlMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBA
QCBib29sIEhUTUxGb3JtRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxGb3JtRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQogewogICAg
IEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQpOwotICAgIGlmIChpbnNl
cnRpb25Qb2ludC5pbkRvY3VtZW50KCkpCisgICAgaWYgKGluc2VydGlvblBvaW50LmlzQ29ubmVj
dGVkKCkpCiAgICAgICAgIGRvY3VtZW50KCkuZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2wodGhpcyk7
CiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CkBAIC0yNDksNyArMjQ5LDcgQEAgYm9vbCBI
VE1MRm9ybUVsZW1lbnQ6OnZhbGlkYXRlSW50ZXJhY3RpdmVseSgpCiAKICAgICAvLyBGb2N1cyBv
biB0aGUgZmlyc3QgZm9jdXNhYmxlIGNvbnRyb2wgYW5kIHNob3cgYSB2YWxpZGF0aW9uIG1lc3Nh
Z2UuCiAgICAgZm9yIChhdXRvJiBjb250cm9sIDogdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzKSB7
Ci0gICAgICAgIGlmIChjb250cm9sLT5pbkRvY3VtZW50KCkgJiYgY29udHJvbC0+aXNGb2N1c2Fi
bGUoKSkgeworICAgICAgICBpZiAoY29udHJvbC0+aXNDb25uZWN0ZWQoKSAmJiBjb250cm9sLT5p
c0ZvY3VzYWJsZSgpKSB7CiAgICAgICAgICAgICBjb250cm9sLT5mb2N1c0FuZFNob3dWYWxpZGF0
aW9uTWVzc2FnZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI1OCw3ICsy
NTgsNyBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6dmFsaWRhdGVJbnRlcmFjdGl2ZWx5KCkKICAg
ICAvLyBXYXJuIGFib3V0IGFsbCBvZiB1bmZvY3VzYWJsZSBjb250cm9scy4KICAgICBpZiAoZG9j
dW1lbnQoKS5mcmFtZSgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgY29udHJvbCA6IHVuaGFuZGxl
ZEludmFsaWRDb250cm9scykgewotICAgICAgICAgICAgaWYgKGNvbnRyb2wtPmluRG9jdW1lbnQo
KSAmJiBjb250cm9sLT5pc0ZvY3VzYWJsZSgpKQorICAgICAgICAgICAgaWYgKGNvbnRyb2wtPmlz
Q29ubmVjdGVkKCkgJiYgY29udHJvbC0+aXNGb2N1c2FibGUoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiQW4gaW52
YWxpZCBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lPSciLCBjb250cm9sLT5uYW1lKCksICInIGlzIG5v
dCBmb2N1c2FibGUuIik7CiAgICAgICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCmluZGV4IDFl
OTAyYTNlM2MwYmE3NmYzMDQ4MjA4YTAwMDA0ZDhkYjU2OGQ3ZTQuLjVkZDE0MmEyNTYwYmI4Yzc1
YmUzZjg1NzhiZjllOGU5ZDIwOTllOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lRWxlbWVudEJhc2UuY3BwCkBAIC0xMzUsMTQgKzEzNSwxNCBAQCB2b2lkIEhUTUxGcmFtZUVs
ZW1lbnRCYXNlOjpzZXROYW1lQW5kT3BlblVSTCgpCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IEhUTUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9k
ZSYgaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50OjppbnNlcnRl
ZEludG8oaW5zZXJ0aW9uUG9pbnQpOwotICAgIGlmIChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50
KCkpCisgICAgaWYgKGluc2VydGlvblBvaW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVy
biBJbnNlcnRpb25TaG91bGRDYWxsRmluaXNoZWRJbnNlcnRpbmdTdWJ0cmVlOwogICAgIHJldHVy
biBJbnNlcnRpb25Eb25lOwogfQogCiB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpmaW5pc2hl
ZEluc2VydGluZ1N1YnRyZWUoKQogewotICAgIGlmICghaW5Eb2N1bWVudCgpKQorICAgIGlmICgh
aXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRG9jdW1lbnRGcmFnbWVu
dHMgZG9uJ3Qga2ljayBvZiBhbnkgbG9hZHMuCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBIVE1M
RnJhbWVFbGVtZW50QmFzZTo6c2V0TG9jYXRpb24oY29uc3QgU3RyaW5nJiBzdHIpCiAKICAgICBt
X1VSTCA9IEF0b21pY1N0cmluZyhzdHIpOwogCi0gICAgaWYgKGluRG9jdW1lbnQoKSkKKyAgICBp
ZiAoaXNDb25uZWN0ZWQoKSkKICAgICAgICAgb3BlblVSTChMb2NrSGlzdG9yeTo6Tm8sIExvY2tC
YWNrRm9yd2FyZExpc3Q6Ok5vKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVPd25lckVsZW1lbnQuY3BwCmluZGV4IDcxYjYyMjFiODllY2JjMzcyNjAwY2ZiMmRjZWQzNDZl
ODA1YWZlYzIuLjM3NzllYzk2ZWNiNDI5MzY2ODM4MGM2MTdmYzFhNmQ2MTYzYmQ4YzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKQEAgLTU1LDcg
KzU1LDcgQEAgdm9pZCBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnNldENvbnRlbnRGcmFtZShGcmFt
ZSogZnJhbWUpCiAgICAgQVNTRVJUKCFtX2NvbnRlbnRGcmFtZSB8fCBtX2NvbnRlbnRGcmFtZS0+
b3duZXJFbGVtZW50KCkgIT0gdGhpcyk7CiAgICAgQVNTRVJUKGZyYW1lKTsKICAgICAvLyBEaXNj
b25uZWN0ZWQgZnJhbWVzIHNob3VsZCBub3QgYmUgYWxsb3dlZCB0byBsb2FkLgotICAgIEFTU0VS
VChpbkRvY3VtZW50KCkpOworICAgIEFTU0VSVChpc0Nvbm5lY3RlZCgpKTsKICAgICBtX2NvbnRl
bnRGcmFtZSA9IGZyYW1lOwogCiAgICAgZm9yIChDb250YWluZXJOb2RlKiBub2RlID0gdGhpczsg
bm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCmluZGV4IDQyYTVjMThhZmJiOWJhZmIw
MWNjNWFmODlkYjY5YzBjY2NmMTY0YTUuLjAxYzVkMWY4ZDI0MTc2MzZmZWViYjkzMTM4NzgyYmE2
NzAzYzhmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNw
cApAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6d2lsbFJlY2Fs
Y1N0eWxlKFN0eWxlOjpDaGFuZ2UpCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0
IEhUTUxGcmFtZVNldEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRp
b25Qb2ludCkKIHsKICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50
KTsKLSAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKGluc2Vy
dGlvblBvaW50LmlzQ29ubmVjdGVkKCkpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5k
aXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGRvY3VtZW50KCkuaXNGcmFtZVNldCgpKTsKICAgICB9
CkBAIC0yMTksNyArMjE5LDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBI
VE1MRnJhbWVTZXRFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm8KIHZvaWQgSFRNTEZy
YW1lU2V0RWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQp
CiB7CiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50KTsKLSAgICBp
ZiAoaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKGluc2VydGlvblBvaW50
LmlzQ29ubmVjdGVkKCkpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCku
ZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERp
ZEJlY29tZUZyYW1lc2V0KGRvY3VtZW50KCkuaXNGcmFtZVNldCgpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCBhNzIxM2Q3YTNmMzYxZThiNGY2
YmI3M2Q1M2EzZTQwOTcxMDJiZTYzLi5jOTEyY2ExYzc1MWRhZTlhMGQ0OTkwMTIyOTgwMjBiZjQy
OGMxNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTIw
NCwxMiArMjA0LDEyIEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAgICAgfSBlbHNlIGlmIChu
YW1lID09IHNyY0F0dHIgfHwgbmFtZSA9PSBzcmNzZXRBdHRyIHx8IG5hbWUgPT0gc2l6ZXNBdHRy
KQogICAgICAgICBzZWxlY3RJbWFnZVNvdXJjZSgpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gdXNl
bWFwQXR0cikgewotICAgICAgICBpZiAoaW5Eb2N1bWVudCgpICYmICFtX3BhcnNlZFVzZW1hcC5p
c051bGwoKSkKKyAgICAgICAgaWYgKGlzQ29ubmVjdGVkKCkgJiYgIW1fcGFyc2VkVXNlbWFwLmlz
TnVsbCgpKQogICAgICAgICAgICAgZG9jdW1lbnQoKS5yZW1vdmVJbWFnZUVsZW1lbnRCeVVzZW1h
cCgqbV9wYXJzZWRVc2VtYXAuaW1wbCgpLCAqdGhpcyk7CiAKICAgICAgICAgbV9wYXJzZWRVc2Vt
YXAgPSBwYXJzZUhUTUxIYXNoTmFtZVJlZmVyZW5jZSh2YWx1ZSk7CiAKLSAgICAgICAgaWYgKGlu
RG9jdW1lbnQoKSAmJiAhbV9wYXJzZWRVc2VtYXAuaXNOdWxsKCkpCisgICAgICAgIGlmIChpc0Nv
bm5lY3RlZCgpICYmICFtX3BhcnNlZFVzZW1hcC5pc051bGwoKSkKICAgICAgICAgICAgIGRvY3Vt
ZW50KCkuYWRkSW1hZ2VFbGVtZW50QnlVc2VtYXAoKm1fcGFyc2VkVXNlbWFwLmltcGwoKSwgKnRo
aXMpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBjb21wb3NpdGVBdHRyKSB7CiAgICAgICAgIC8v
IEZJWE1FOiBpbWFnZXMgZG9uJ3Qgc3VwcG9ydCBibGVuZCBtb2RlcyBpbiB0aGVpciBjb21wb3Np
dGluZyBhdHRyaWJ1dGUuCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHIKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobmFtZSA9PSBuYW1lQXR0cikgewogICAgICAg
ICAgICAgYm9vbCB3aWxsSGF2ZU5hbWUgPSAhdmFsdWUuaXNOdWxsKCk7Ci0gICAgICAgICAgICBp
ZiAobV9oYWROYW1lQmVmb3JlQXR0cmlidXRlQ2hhbmdlZCAhPSB3aWxsSGF2ZU5hbWUgJiYgaW5E
b2N1bWVudCgpICYmICFpc0luU2hhZG93VHJlZSgpICYmIGlzPEhUTUxEb2N1bWVudD4oZG9jdW1l
bnQoKSkpIHsKKyAgICAgICAgICAgIGlmIChtX2hhZE5hbWVCZWZvcmVBdHRyaWJ1dGVDaGFuZ2Vk
ICE9IHdpbGxIYXZlTmFtZSAmJiBpc0Nvbm5lY3RlZCgpICYmICFpc0luU2hhZG93VHJlZSgpICYm
IGlzPEhUTUxEb2N1bWVudD4oZG9jdW1lbnQoKSkpIHsKICAgICAgICAgICAgICAgICBIVE1MRG9j
dW1lbnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8SFRNTERvY3VtZW50Pih0aGlzLT5kb2N1bWVudCgp
KTsKICAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gZ2V0SWRBdHRyaWJ1
dGUoKTsKICAgICAgICAgICAgICAgICBpZiAoIWlkLmlzRW1wdHkoKSAmJiBpZCAhPSBnZXROYW1l
QXR0cmlidXRlKCkpIHsKQEAgLTMxMyw3ICszMTMsNyBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmlj
YXRpb25SZXF1ZXN0IEhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2Rl
JgogICAgIC8vIGluIGNhbGxiYWNrcyBiYWNrIHRvIHRoaXMgbm9kZS4KICAgICBOb2RlOjpJbnNl
cnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydE5vdGlmaWNhdGlvblJlcXVlc3QgPSBIVE1M
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKIAotICAgIGlmIChpbnNlcnRp
b25Qb2ludC5pbkRvY3VtZW50KCkgJiYgIW1fcGFyc2VkVXNlbWFwLmlzTnVsbCgpKQorICAgIGlm
IChpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgpICYmICFtX3BhcnNlZFVzZW1hcC5pc051bGwo
KSkKICAgICAgICAgZG9jdW1lbnQoKS5hZGRJbWFnZUVsZW1lbnRCeVVzZW1hcCgqbV9wYXJzZWRV
c2VtYXAuaW1wbCgpLCAqdGhpcyk7CiAKICAgICBpZiAoaXM8SFRNTFBpY3R1cmVFbGVtZW50Pihw
YXJlbnROb2RlKCkpKSB7CkBAIC0zMjMsNyArMzIzLDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZp
Y2F0aW9uUmVxdWVzdCBIVE1MSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9k
ZSYKIAogICAgIC8vIElmIHdlIGhhdmUgYmVlbiBpbnNlcnRlZCBmcm9tIGEgcmVuZGVyZXItbGVz
cyBkb2N1bWVudCwKICAgICAvLyBvdXIgbG9hZGVyIG1heSBoYXZlIG5vdCBmZXRjaGVkIHRoZSBp
bWFnZSwgc28gZG8gaXQgbm93LgotICAgIGlmIChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkg
JiYgIW1faW1hZ2VMb2FkZXIuaW1hZ2UoKSkKKyAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaXNDb25u
ZWN0ZWQoKSAmJiAhbV9pbWFnZUxvYWRlci5pbWFnZSgpKQogICAgICAgICBtX2ltYWdlTG9hZGVy
LnVwZGF0ZUZyb21FbGVtZW50KCk7CiAKICAgICByZXR1cm4gaW5zZXJ0Tm90aWZpY2F0aW9uUmVx
dWVzdDsKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnJlbW92ZWRG
cm9tKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQogICAgIGlmIChtX2Zvcm0pCiAgICAg
ICAgIG1fZm9ybS0+cmVtb3ZlSW1nRWxlbWVudCh0aGlzKTsKIAotICAgIGlmIChpbnNlcnRpb25Q
b2ludC5pbkRvY3VtZW50KCkgJiYgIW1fcGFyc2VkVXNlbWFwLmlzTnVsbCgpKQorICAgIGlmIChp
bnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgpICYmICFtX3BhcnNlZFVzZW1hcC5pc051bGwoKSkK
ICAgICAgICAgZG9jdW1lbnQoKS5yZW1vdmVJbWFnZUVsZW1lbnRCeVVzZW1hcCgqbV9wYXJzZWRV
c2VtYXAuaW1wbCgpLCAqdGhpcyk7CiAgICAgCiAgICAgaWYgKGlzPEhUTUxQaWN0dXJlRWxlbWVu
dD4ocGFyZW50Tm9kZSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmNwcApp
bmRleCA0YmFmZDQ4NGRjYTM3NWZkNTZhN2ZlZjdmYjJhZjczMmQ0ZjJmYTZjLi41ZTNlN2I5M2My
YWY4YmIzNWJlYjYyYjYwYmZlNmE2MWIzN2JlOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VMb2FkZXIuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgSFRNTEltYWdlTG9hZGVyOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpCiAKICAgICBib29sIGxvYWRFcnJvciA9IGNh
Y2hlZEltYWdlLmVycm9yT2NjdXJyZWQoKSB8fCBjYWNoZWRJbWFnZS5yZXNwb25zZSgpLmh0dHBT
dGF0dXNDb2RlKCkgPj0gNDAwOwogICAgIGlmICghbG9hZEVycm9yKSB7Ci0gICAgICAgIGlmICgh
ZWxlbWVudCgpLmluRG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoIWVsZW1lbnQoKS5pc0Nvbm5l
Y3RlZCgpKSB7CiAgICAgICAgICAgICBKU0M6OlZNJiB2bSA9IGNvbW1vblZNKCk7CiAgICAgICAg
ICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBB
ZG9wdCByZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQsIGFuZCBzd2l0Y2ggdG8gcmVwb3J0RXh0cmFN
ZW1vcnlBbGxvY2F0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApp
bmRleCBiOTgyNDkyN2NiNTQwZTQyZmM4YmE5OGEyY2E0ZGYyZWZiMWMyYTQ0Li40MmE1MjM0ODBm
NjNiMDk1NmMyYjk2NWUzZTZiMGQ0ZmNlMjVjMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKQEAgLTkyMyw3ICs5MjMsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OnNldENoZWNrZWQoYm9vbCBub3dDaGVja2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2
ZW50QgogICAgIC8vIHVuY2hlY2tlZCB0byBtYXRjaCBvdGhlciBicm93c2Vycy4gRE9NIGlzIG5v
dCBhIHVzZWZ1bCBzdGFuZGFyZCBmb3IgdGhpcwogICAgIC8vIGJlY2F1c2UgaXQgc2F5cyBvbmx5
IHRvIGZpcmUgY2hhbmdlIGV2ZW50cyBhdCAibG9zZSBmb2N1cyIgdGltZSwgd2hpY2ggaXMKICAg
ICAvLyBkZWZpbml0ZWx5IHdyb25nIGluIHByYWN0aWNlIGZvciB0aGVzZSB0eXBlcyBvZiBlbGVt
ZW50cy4KLSAgICBpZiAoZXZlbnRCZWhhdmlvciAhPSBEaXNwYXRjaE5vRXZlbnQgJiYgaW5Eb2N1
bWVudCgpICYmIG1faW5wdXRUeXBlLT5zaG91bGRTZW5kQ2hhbmdlRXZlbnRBZnRlckNoZWNrZWRD
aGFuZ2VkKCkpIHsKKyAgICBpZiAoZXZlbnRCZWhhdmlvciAhPSBEaXNwYXRjaE5vRXZlbnQgJiYg
aXNDb25uZWN0ZWQoKSAmJiBtX2lucHV0VHlwZS0+c2hvdWxkU2VuZENoYW5nZUV2ZW50QWZ0ZXJD
aGVja2VkQ2hhbmdlZCgpKSB7CiAgICAgICAgIHNldFRleHRBc09mTGFzdEZvcm1Db250cm9sQ2hh
bmdlRXZlbnQoU3RyaW5nKCkpOwogICAgICAgICBkaXNwYXRjaEZvcm1Db250cm9sQ2hhbmdlRXZl
bnQoKTsKICAgICB9CkBAIC0xNTA5LDE2ICsxNTA5LDE2IEBAIE5vZGU6Okluc2VydGlvbk5vdGlm
aWNhdGlvblJlcXVlc3QgSFRNTElucHV0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5v
ZGUmCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmZpbmlzaGVkSW5zZXJ0aW5nU3VidHJlZSgpCiB7
CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmZpbmlzaGVkSW5zZXJ0aW5nU3VidHJl
ZSgpOwotICAgIGlmIChpbkRvY3VtZW50KCkgJiYgIWZvcm0oKSkKKyAgICBpZiAoaXNDb25uZWN0
ZWQoKSAmJiAhZm9ybSgpKQogICAgICAgICBhZGRUb1JhZGlvQnV0dG9uR3JvdXAoKTsKIH0KIAog
dm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNlcnRp
b25Qb2ludCkKIHsKLSAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpICYmICFmb3Jt
KCkpCisgICAgaWYgKGluc2VydGlvblBvaW50LmlzQ29ubmVjdGVkKCkgJiYgIWZvcm0oKSkKICAg
ICAgICAgcmVtb3ZlRnJvbVJhZGlvQnV0dG9uR3JvdXAoKTsKICAgICBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwotICAgIEFTU0VSVCghaW5E
b2N1bWVudCgpKTsKKyAgICBBU1NFUlQoIWlzQ29ubmVjdGVkKCkpOwogI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQogICAgIHJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCk7CiAj
ZW5kaWYKQEAgLTE2MDQsNyArMTYwNCw3IEBAIEhUTUxEYXRhTGlzdEVsZW1lbnQqIEhUTUxJbnB1
dEVsZW1lbnQ6OmRhdGFMaXN0KCkgY29uc3QKIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZXNl
dExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpCiB7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSkK
KyAgICBpZiAoaXNDb25uZWN0ZWQoKSkKICAgICAgICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2Jz
ZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihsaXN0QXR0ciksIHRoaXMpOwogICAgIGVsc2UK
ICAgICAgICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBudWxscHRyOwpAQCAtMTg3
MCw3ICsxODcwLDcgQEAgUmFkaW9CdXR0b25Hcm91cHMqIEhUTUxJbnB1dEVsZW1lbnQ6OnJhZGlv
QnV0dG9uR3JvdXBzKCkgY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGF1
dG8qIGZvcm1FbGVtZW50ID0gZm9ybSgpKQogICAgICAgICByZXR1cm4gJmZvcm1FbGVtZW50LT5y
YWRpb0J1dHRvbkdyb3VwcygpOwotICAgIGlmIChpbkRvY3VtZW50KCkpCisgICAgaWYgKGlzQ29u
bmVjdGVkKCkpCiAgICAgICAgIHJldHVybiAmZG9jdW1lbnQoKS5mb3JtQ29udHJvbGxlcigpLnJh
ZGlvQnV0dG9uR3JvdXBzKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcAppbmRleCAwMTBmZmM0YzM0YjgwOTVjYTk5NDUzMDAz
YWUwZmI2Y2U4N2JmMWZkLi44ZjVhYzBjMTY0Y2I1NjRhNDMzODMyZDUxZjVkMmUxYjZjYjFkNTc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKQEAgLTcxLDcgKzcx
LDcgQEAgTGFiZWxhYmxlRWxlbWVudCogSFRNTExhYmVsRWxlbWVudDo6Y29udHJvbCgpIGNvbnN0
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBp
bkRvY3VtZW50KCkgPyBmaXJzdEVsZW1lbnRXaXRoSWRJZkxhYmVsYWJsZSh0cmVlU2NvcGUoKSwg
Y29udHJvbElkKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGlzQ29ubmVjdGVkKCkgPyBmaXJzdEVs
ZW1lbnRXaXRoSWRJZkxhYmVsYWJsZSh0cmVlU2NvcGUoKSwgY29udHJvbElkKSA6IG51bGxwdHI7
CiB9CiAKIEhUTUxGb3JtRWxlbWVudCogSFRNTExhYmVsRWxlbWVudDo6Zm9ybSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggNTJhZjFmZjI5Y2RlZDcz
NmVmYWY1NTU1ODJhMTAzMzBkMGVkYjY3MC4uZjIzODYyZTFlNmE0OTEwN2M1ZDAxOThhYjkyZmEx
ZmIzZGM1NTU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAt
MTEzLDggKzExMyw4IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXREaXNhYmxlZFN0YXRlKGJv
b2wgZGlzYWJsZWQpCiAgICAgaWYgKG9sZERpc2FibGVkU3RhdGUgPT0gbV9kaXNhYmxlZFN0YXRl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoaW5Eb2N1bWVudCgpIHx8ICFzdHlsZVNo
ZWV0SXNMb2FkaW5nKCkpOwotICAgIGlmICghaW5Eb2N1bWVudCgpKQorICAgIEFTU0VSVChpc0Nv
bm5lY3RlZCgpIHx8ICFzdHlsZVNoZWV0SXNMb2FkaW5nKCkpOworICAgIGlmICghaXNDb25uZWN0
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSWYgd2UgY2hhbmdlIHRoZSBkaXNhYmxl
ZCBzdGF0ZSB3aGlsZSB0aGUgc2hlZXQgaXMgc3RpbGwgbG9hZGluZywgdGhlbiB3ZSBoYXZlIHRv
CkBAIC0yMDIsNyArMjAyLDcgQEAgYm9vbCBIVE1MTGlua0VsZW1lbnQ6OnNob3VsZExvYWRMaW5r
KCkKICAgICBpZiAoIWRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGdldE5vbkVtcHR5VVJMQXR0cmli
dXRlKGhyZWZBdHRyKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBBIGJlZm9yZWxv
YWQgaGFuZGxlciBtaWdodCBoYXZlIHJlbW92ZWQgdXMgZnJvbSB0aGUgZG9jdW1lbnQgb3IgY2hh
bmdlZCB0aGUgZG9jdW1lbnQuCi0gICAgaWYgKCFpbkRvY3VtZW50KCkgfHwgJmRvY3VtZW50KCkg
IT0gb3JpZ2luYWxEb2N1bWVudC5wdHIoKSkKKyAgICBpZiAoIWlzQ29ubmVjdGVkKCkgfHwgJmRv
Y3VtZW50KCkgIT0gb3JpZ2luYWxEb2N1bWVudC5wdHIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjE5LDcgKzIxOSw3IEBAIFN0cmluZyBIVE1MTGlu
a0VsZW1lbnQ6OmNyb3NzT3JpZ2luKCkgY29uc3QKIAogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnBy
b2Nlc3MoKQogewotICAgIGlmICghaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKCFpc0Nvbm5lY3Rl
ZCgpKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaGVldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0zMDIsOSArMzAyLDkgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmNsZWFyU2hlZXQoKQog
CiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxMaW5rRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQogewotICAgIGJvb2wgd2Fz
SW5Eb2N1bWVudCA9IGluRG9jdW1lbnQoKTsKKyAgICBib29sIHdhc0luRG9jdW1lbnQgPSBpc0Nv
bm5lY3RlZCgpOwogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQp
OwotICAgIGlmICghaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpIHx8IHdhc0luRG9jdW1lbnQp
CisgICAgaWYgKCFpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgpIHx8IHdhc0luRG9jdW1lbnQp
CiAgICAgICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogCiAgICAgbV9zdHlsZVNjb3BlID0gJlN0
eWxlOjpTY29wZTo6Zm9yTm9kZSgqdGhpcyk7CkBAIC0zMTcsNyArMzE3LDcgQEAgTm9kZTo6SW5z
ZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MTGlua0VsZW1lbnQ6Omluc2VydGVkSW50byhD
b250YWluZXJOb2RlJgogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5l
ck5vZGUmIGluc2VydGlvblBvaW50KQogewogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbShp
bnNlcnRpb25Qb2ludCk7Ci0gICAgaWYgKCFpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkgfHwg
aW5Eb2N1bWVudCgpKQorICAgIGlmICghaW5zZXJ0aW9uUG9pbnQuaXNDb25uZWN0ZWQoKSB8fCBp
c0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9zaGVldCkKQEAgLTM1
Myw3ICszNTMsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6aW5pdGlhbGl6ZVN0eWxlU2hlZXQo
UmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBzdHlsZVNoZWV0LAogCiB2b2lkIEhUTUxMaW5rRWxl
bWVudDo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFz
ZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBj
YWNoZWRTdHlsZVNoZWV0KQogewotICAgIGlmICghaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKCFp
c0Nvbm5lY3RlZCgpKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaGVldCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCmluZGV4IGIxOGI0
ODQ4NzkyYzdiMzViYzg3YTFmNGU2MDI3MDJhNGQzNGQzNzQuLjAxZTZlZGFkMDdiZGIzYmUxZDAx
Yjg5ODJhNWNjMTk5YmQ4YjY2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQu
Y3BwCkBAIC05NCwxMyArOTQsMTMgQEAgdm9pZCBIVE1MTWFwRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW4KICAgICAgICAg
ICAgIGlmIChkb2N1bWVudCgpLmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChpbkRvY3VtZW50KCkpCisgICAgICAgIGlmIChp
c0Nvbm5lY3RlZCgpKQogICAgICAgICAgICAgdHJlZVNjb3BlKCkucmVtb3ZlSW1hZ2VNYXAoKnRo
aXMpOwogICAgICAgICBTdHJpbmcgbWFwTmFtZSA9IHZhbHVlOwogICAgICAgICBpZiAobWFwTmFt
ZVswXSA9PSAnIycpCiAgICAgICAgICAgICBtYXBOYW1lID0gbWFwTmFtZS5zdWJzdHJpbmcoMSk7
CiAgICAgICAgIG1fbmFtZSA9IG1hcE5hbWU7Ci0gICAgICAgIGlmIChpbkRvY3VtZW50KCkpCisg
ICAgICAgIGlmIChpc0Nvbm5lY3RlZCgpKQogICAgICAgICAgICAgdHJlZVNjb3BlKCkuYWRkSW1h
Z2VNYXAoKnRoaXMpOwogCiAgICAgICAgIHJldHVybjsKQEAgLTExNywxNCArMTE3LDE0IEBAIFJl
ZjxIVE1MQ29sbGVjdGlvbj4gSFRNTE1hcEVsZW1lbnQ6OmFyZWFzKCkKIE5vZGU6Okluc2VydGlv
bk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTE1hcEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWlu
ZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IHJlcXVlc3QgPSBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBv
aW50KTsKLSAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpKQorICAgIGlmIChpbnNl
cnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgpKQogICAgICAgICB0cmVlU2NvcGUoKS5hZGRJbWFnZU1h
cCgqdGhpcyk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKIHZvaWQgSFRNTE1hcEVsZW1lbnQ6
OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQogewotICAgIGlmIChp
bnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkpCisgICAgaWYgKGluc2VydGlvblBvaW50LmlzQ29u
bmVjdGVkKCkpCiAgICAgICAgIHRyZWVTY29wZSgpLnJlbW92ZUltYWdlTWFwKCp0aGlzKTsKICAg
ICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZGI4Mzk3NDk3ZGY3NDQ5OTRiYTFj
NDdmZWJkYjQwMmIxODRmMTgzYi4uZDllYmIxMmMyZGJlMThlNzJiNzI5NjMzNjc1ODBjNGIyZDE2
YTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC04MTcs
NyArODE3LDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MTWVkaWFF
bGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYKICAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50OjppbnNlcnRlZEludG8oJXApIiwgdGhpcyk7CiAKICAgICBIVE1MRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKLSAgICBpZiAoaW5zZXJ0aW9uUG9pbnQu
aW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKGluc2VydGlvblBvaW50LmlzQ29ubmVjdGVkKCkpIHsK
ICAgICAgICAgbV9pbkFjdGl2ZURvY3VtZW50ID0gdHJ1ZTsKIAogI2lmIFBMQVRGT1JNKElPUykK
QEAgLTg3Niw3ICs4NzYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENv
bnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZWRGcm9tKCVwKSIsIHRoaXMpOwogCiAgICAgbV9pbkFjdGl2ZURvY3VtZW50
ID0gZmFsc2U7Ci0gICAgaWYgKGluc2VydGlvblBvaW50LmluRG9jdW1lbnQoKSkgeworICAgIGlm
IChpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgpKSB7CiAgICAgICAgIC8vIFBhdXNlIGFzeW5j
aHJvbm91c2x5IHRvIGxldCB0aGUgb3BlcmF0aW9uIHRoYXQgcmVtb3ZlZCB1cyBmaW5pc2gsIGlu
IGNhc2Ugd2UgZ2V0IGluc2VydGVkIGJhY2sgaW50byBhIGRvY3VtZW50LgogICAgICAgICBtX3Bh
dXNlQWZ0ZXJEZXRhY2hlZFRhc2tRdWV1ZS5lbnF1ZXVlVGFzayhzdGQ6OmJpbmQoJkhUTUxNZWRp
YUVsZW1lbnQ6OnBhdXNlQWZ0ZXJEZXRhY2hlZFRhc2ssIHRoaXMpKTsKICAgICB9CkBAIC01ODQ3
LDcgKzU4NDcsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhQ29udHJvbHMo
KQogCiAgICAgZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpLmFwcGVuZENoaWxkKG1lZGlhQ29u
dHJvbHMpOwogCi0gICAgaWYgKCFjb250cm9scygpIHx8ICFpbkRvY3VtZW50KCkpCisgICAgaWYg
KCFjb250cm9scygpIHx8ICFpc0Nvbm5lY3RlZCgpKQogICAgICAgICBtZWRpYUNvbnRyb2xzLT5o
aWRlKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU4NzIsMTIgKzU4NzIsMTIgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVNZWRpYUNvbnRyb2xzKCkKICNlbmRpZgogCiAjaWYg
RU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKLSAgICBpZiAoIXJlcXVpcmVDb250cm9scyB8
fCAhaW5Eb2N1bWVudCgpIHx8ICFpbkFjdGl2ZURvY3VtZW50KCkpCisgICAgaWYgKCFyZXF1aXJl
Q29udHJvbHMgfHwgIWlzQ29ubmVjdGVkKCkgfHwgIWluQWN0aXZlRG9jdW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgZW5zdXJlTWVkaWFDb250cm9sc1NoYWRvd1Jvb3QoKTsKICNlbHNl
Ci0gICAgaWYgKCFyZXF1aXJlQ29udHJvbHMgfHwgIWluRG9jdW1lbnQoKSB8fCAhaW5BY3RpdmVE
b2N1bWVudCgpKSB7CisgICAgaWYgKCFyZXF1aXJlQ29udHJvbHMgfHwgIWlzQ29ubmVjdGVkKCkg
fHwgIWluQWN0aXZlRG9jdW1lbnQoKSkgewogICAgICAgICBpZiAoaGFzTWVkaWFDb250cm9scygp
KQogICAgICAgICAgICAgbWVkaWFDb250cm9scygpLT5oaWRlKCk7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAppbmRleCBjM2VkODIwNzI4MWMz
YWRkN2VkM2M1MDMzMWU3YTk0M2RhOWNiYTBhLi4xNWYwMDIxNzc5MTY4ZTJjNGIwZDA0Y2JlZTc5
MDdjNGE1OGM0OWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCkBA
IC02Myw3ICs2Myw3IEBAIHZvaWQgSFRNTE1ldGFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpCiBOb2RlOjpJbnNlcnRpb25O
b3RpZmljYXRpb25SZXF1ZXN0IEhUTUxNZXRhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5l
ck5vZGUmIGluc2VydGlvblBvaW50KQogewogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8o
aW5zZXJ0aW9uUG9pbnQpOwotICAgIGlmIChpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkpCisg
ICAgaWYgKGluc2VydGlvblBvaW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHByb2Nlc3MoKTsK
ICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0KQEAgLTcxLDcgKzcxLDcgQEAgTm9kZTo6SW5z
ZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MTWV0YUVsZW1lbnQ6Omluc2VydGVkSW50byhD
b250YWluZXJOb2RlJgogdm9pZCBIVE1MTWV0YUVsZW1lbnQ6OnByb2Nlc3MoKQogewogICAgIC8v
IENoYW5naW5nIGEgbWV0YSB0YWcgd2hpbGUgaXQncyBub3QgaW4gdGhlIHRyZWUgc2hvdWxkbid0
IGhhdmUgYW55IGVmZmVjdCBvbiB0aGUgZG9jdW1lbnQuCi0gICAgaWYgKCFpbkRvY3VtZW50KCkp
CisgICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGNvbnRlbnRWYWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oY29udGVudEF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNw
cAppbmRleCBjYTkwOTcyMDRhYjM2MGIyMDQ3OTZkODhhMzQ3MWFlYjg4MGRkNWU0Li5lODYyMGE4
OGI3MzRkZDgyNjg4OGQ5ZjczODI1NWUxZmZhZjNjM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgSFRNTE9iamVj
dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21pY1N0CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIAotICAgIGlmICghaW52YWxpZGF0ZVJlbmRlcmVy
IHx8ICFpbkRvY3VtZW50KCkgfHwgIXJlbmRlcmVyKCkpCisgICAgaWYgKCFpbnZhbGlkYXRlUmVu
ZGVyZXIgfHwgIWlzQ29ubmVjdGVkKCkgfHwgIXJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGNsZWFyVXNlRmFsbGJhY2tDb250ZW50KCk7CkBAIC0zNDksNyArMzQ5LDcgQEAgdm9p
ZCBIVE1MT2JqZWN0RWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9u
UG9pbnQpCiB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmIGNoYW5nZSkKIHsKICAgICB1cGRhdGVEb2NOYW1lZEl0ZW0oKTsKLSAgICBpZiAo
aW5Eb2N1bWVudCgpICYmICF1c2VGYWxsYmFja0NvbnRlbnQoKSkgeworICAgIGlmIChpc0Nvbm5l
Y3RlZCgpICYmICF1c2VGYWxsYmFja0NvbnRlbnQoKSkgewogICAgICAgICBzZXROZWVkc1dpZGdl
dFVwZGF0ZSh0cnVlKTsKICAgICAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogICAg
IH0KQEAgLTM3MSw3ICszNzEsNyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJGYWxs
YmFja0NvbnRlbnQoKQogICAgIGlmICh1c2VGYWxsYmFja0NvbnRlbnQoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIGlmICghaW5Eb2N1bWVudCgpKQorICAgIGlmICghaXNDb25uZWN0ZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW52YWxpZGF0ZVN0eWxlQW5kUmVuZGVyZXJzRm9y
U3VidHJlZSgpOwpAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnVw
ZGF0ZURvY05hbWVkSXRlbSgpCiAgICAgICAgICAgICBpc05hbWVkSXRlbSA9IGZhbHNlOwogICAg
ICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOwogICAgIH0KLSAgICBpZiAoaXNOYW1l
ZEl0ZW0gIT0gd2FzTmFtZWRJdGVtICYmIGluRG9jdW1lbnQoKSAmJiAhaXNJblNoYWRvd1RyZWUo
KSAmJiBpczxIVE1MRG9jdW1lbnQ+KGRvY3VtZW50KCkpKSB7CisgICAgaWYgKGlzTmFtZWRJdGVt
ICE9IHdhc05hbWVkSXRlbSAmJiBpc0Nvbm5lY3RlZCgpICYmICFpc0luU2hhZG93VHJlZSgpICYm
IGlzPEhUTUxEb2N1bWVudD4oZG9jdW1lbnQoKSkpIHsKICAgICAgICAgSFRNTERvY3VtZW50JiBk
b2N1bWVudCA9IGRvd25jYXN0PEhUTUxEb2N1bWVudD4odGhpcy0+ZG9jdW1lbnQoKSk7CiAKICAg
ICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZCA9IGdldElkQXR0cmlidXRlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBhOGNiOGU1
NTM0OWJjMTU4YTY0ZmE1ZThlNGE0MGYwNDBiNmQyN2I1Li4zZmRlZDVjY2U4NDA4YjViYTgyNzcw
NWM2N2JjYjA5NzhjNWFhYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiAgICAgLy8gSFRNTE9iamVjdEVsZW1l
bnQgbmVlZHMgdG8gZGVsYXkgd2lkZ2V0IHVwZGF0ZXMgdW50aWwgYWZ0ZXIgYWxsIGNoaWxkcmVu
IGFyZSBwYXJzZWQsCiAgICAgLy8gRm9yIEhUTUxFbWJlZEVsZW1lbnQgdGhpcyBkZWxheSBpcyB1
bm5lY2Vzc2FyeSwgYnV0IHRoZXJlIGlzIG5vIGhhcm0gaW4gZG9pbmcgdGhlIHNhbWUuCiAgICAg
c2V0TmVlZHNXaWRnZXRVcGRhdGUodHJ1ZSk7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSkKKyAgICBp
ZiAoaXNDb25uZWN0ZWQoKSkKICAgICAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IGJjOGIw
N2M5YTgxNWQ5ZTQ3Y2QzYWMyOTY3ZGI4ZjcwZTJkMjhkYjAuLmVhMDllNTU5OGY2NjcxMTFlNTdh
Mzc0OTkwMjRlYTU2MWJhNzJmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuY3BwCkBAIC03NTksMTEgKzc1OSwxMSBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojpz
ZXRSZWNhbGNMaXN0SXRlbXMoKQogICAgIG1fYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXggPSAt
MTsKICAgICBzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoKTsKICAgICBpbnZhbGlkYXRlU3R5
bGVGb3JTdWJ0cmVlKCk7Ci0gICAgaWYgKCFpbkRvY3VtZW50KCkpIHsKKyAgICBpZiAoIWlzQ29u
bmVjdGVkKCkpIHsKICAgICAgICAgaWYgKEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uID0gY2Fj
aGVkSFRNTENvbGxlY3Rpb24oU2VsZWN0T3B0aW9ucykpCiAgICAgICAgICAgICBjb2xsZWN0aW9u
LT5pbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQoKSk7CiAgICAgfQotICAgIGlmICghaW5Eb2N1bWVu
dCgpKQorICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAgICAgaW52YWxpZGF0ZVNlbGVjdGVk
SXRlbXMoKTsKICAgICBpZiAoYXV0byogY2FjaGUgPSBkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmpl
Y3RDYWNoZSgpKQogICAgICAgICBjYWNoZS0+Y2hpbGRyZW5DaGFuZ2VkKHRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKaW5kZXggNjUyMzRhYTJhNDhiZWIzZTBi
YmJmZjZkZDJjN2VlYWY5NGYxNDM4Ni4uZjdlOWQ1ZThhODcxYmRmMTdkOWE4MDJlMjU2M2Q1M2Rj
MWYxZmUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCkBAIC05
Nyw5ICs5Nyw5IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVu
KCkKIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MU3R5bGVFbGVtZW50
OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7Ci0gICAgYm9v
bCB3YXNJbkRvY3VtZW50ID0gaW5Eb2N1bWVudCgpOworICAgIGJvb2wgd2FzSW5Eb2N1bWVudCA9
IGlzQ29ubmVjdGVkKCk7CiAgICAgYXV0byByZXN1bHQgPSBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvKGluc2VydGlvblBvaW50KTsKLSAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgp
ICYmICF3YXNJbkRvY3VtZW50KQorICAgIGlmIChpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgp
ICYmICF3YXNJbkRvY3VtZW50KQogICAgICAgICBtX3N0eWxlU2hlZXRPd25lci5pbnNlcnRlZElu
dG9Eb2N1bWVudCgqdGhpcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEwNyw3ICsxMDcs
NyBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxTdHlsZUVsZW1lbnQ6
Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJgogdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpyZW1v
dmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBIVE1MRWxlbWVu
dDo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwotICAgIGlmIChpbnNlcnRpb25Qb2ludC5p
bkRvY3VtZW50KCkgJiYgIWluRG9jdW1lbnQoKSkKKyAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaXND
b25uZWN0ZWQoKSAmJiAhaXNDb25uZWN0ZWQoKSkKICAgICAgICAgbV9zdHlsZVNoZWV0T3duZXIu
cmVtb3ZlZEZyb21Eb2N1bWVudCgqdGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggYTlhNTM3NGNjNmE0YjEy
YTcwZjJiOTg0NjNiOWY5Zjg4YzY5ODk0MC4uZThjZDQ4MzY4NmUxYTIzMGI1M2EyNThkYzQwMjJj
M2Y5MTlhYzRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJiBjaGlsZCkg
Y28KIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsK
ICAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGlvbk5vdGlmaWNhdGlvblJl
cXVlc3QgPSBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjppbnNlcnRlZEludG8oaW5z
ZXJ0aW9uUG9pbnQpOwotICAgIGlmICghaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpKQorICAg
IGlmICghaW5zZXJ0aW9uUG9pbnQuaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuIGluc2Vy
dGlvbk5vdGlmaWNhdGlvblJlcXVlc3Q7CiAgICAgU3RyaW5nIGluaXRpYWxWYWx1ZSA9IHZhbHVl
KCk7CiAgICAgc2V0VGV4dEFzT2ZMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudChpbml0aWFsVmFs
dWUuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogaW5pdGlhbFZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCmluZGV4IDFkZTRkN2UwNmU5YzIxZWFkYjVmMmQ0
Zjk1NzBhNWYzYmFjZmMzYzYuLjgxYmE4ZGVlZmQ5ZjdlZGQxZWYxODdkMjA3MDI2ZDIyYzVjMDA5
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcApAQCAtNTMsNyAr
NTMsNyBAQCBSZWY8SFRNTFRpdGxlRWxlbWVudD4gSFRNTFRpdGxlRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBIVE1MVGl0bGVFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYg
aW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50byhpbnNlcnRp
b25Qb2ludCk7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSAmJiAhaXNJblNoYWRvd1RyZWUoKSkKKyAg
ICBpZiAoaXNDb25uZWN0ZWQoKSAmJiAhaXNJblNoYWRvd1RyZWUoKSkKICAgICAgICAgZG9jdW1l
bnQoKS50aXRsZUVsZW1lbnRBZGRlZCgqdGhpcyk7CiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7
CiB9CkBAIC02MSw3ICs2MSw3IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3Qg
SFRNTFRpdGxlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmCiB2b2lkIEhUTUxU
aXRsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQog
ewogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7Ci0gICAgaWYg
KGluc2VydGlvblBvaW50LmluRG9jdW1lbnQoKSAmJiAhaW5zZXJ0aW9uUG9pbnQuaXNJblNoYWRv
d1RyZWUoKSkKKyAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaXNDb25uZWN0ZWQoKSAmJiAhaW5zZXJ0
aW9uUG9pbnQuaXNJblNoYWRvd1RyZWUoKSkKICAgICAgICAgZG9jdW1lbnQoKS50aXRsZUVsZW1l
bnRSZW1vdmVkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
U3R5bGUuY3BwCmluZGV4IDlkYzhmMDQ4ZDc2ZjhjOTJiYmEyZTE5OTZkYThkN2FkOGEyZWIzNmMu
LjA1MmZhMzE2NDZlOGUyZGEzMGQzNzczN2UxNDk0ZTZjMTUyMDA3NjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGlj
IENvbG9yIHBhcnNlQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZywgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gbnVsbHB0cikKIAogQ29sb3IgY3VycmVudENvbG9yKEhUTUxDYW52YXNFbGVtZW50
KiBjYW52YXMpCiB7Ci0gICAgaWYgKCFjYW52YXMgfHwgIWNhbnZhcy0+aW5Eb2N1bWVudCgpIHx8
ICFjYW52YXMtPmlubGluZVN0eWxlKCkpCisgICAgaWYgKCFjYW52YXMgfHwgIWNhbnZhcy0+aXND
b25uZWN0ZWQoKSB8fCAhY2FudmFzLT5pbmxpbmVTdHlsZSgpKQogICAgICAgICByZXR1cm4gQ29s
b3I6OmJsYWNrOwogICAgIENvbG9yIGNvbG9yID0gQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKGNhbnZh
cy0+aW5saW5lU3R5bGUoKS0+Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKSk7CiAg
ICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAK
aW5kZXggZDU4NmUyOWRjNTU4ODY5NjhlZDQwOTVlOGE4ZTgwN2M3ZDFiMjMxYi4uZDU2NTM4MmZj
ZjM3ZTBmOGJhMDM0ODk2YjU4MWVjOTBmMTRlMTFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2Vs
ZWN0aW9uLmNwcApAQCAtMzkyLDcgKzM5Miw3IEBAIGJvb2wgRE9NU2VsZWN0aW9uOjpjb250YWlu
c05vZGUoTm9kZSYgbm9kZSwgYm9vbCBhbGxvd1BhcnRpYWwpIGNvbnN0CiAgICAgYXV0byBzZWxl
Y3RlZFJhbmdlID0gc2VsZWN0aW9uLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAK
ICAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlID0gbm9kZS5wYXJlbnROb2RlKCk7Ci0gICAg
aWYgKCFwYXJlbnROb2RlIHx8ICFwYXJlbnROb2RlLT5pbkRvY3VtZW50KCkpCisgICAgaWYgKCFw
YXJlbnROb2RlIHx8ICFwYXJlbnROb2RlLT5pc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgdW5zaWduZWQgbm9kZUluZGV4ID0gbm9kZS5jb21wdXRlTm9kZUluZGV4KCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAyY2Y0ODY3ODIxZWU5ZmU4
NGY2NmZjMzhhNjQ5Y2MwY2FkZjM1YzZiLi4wM2Q0ODNiNTQxYzAxOTdkMzhlOTQzNTM4MmEzNzc1
ZjYzZmZmYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zNDAwLDcg
KzM0MDAsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgRHJhZ09wZXJhdAogdm9pZCBFdmVudEhhbmRsZXI6OnVw
ZGF0ZURyYWdTdGF0ZUFmdGVyRWRpdERyYWdJZk5lZWRlZChFbGVtZW50JiByb290RWRpdGFibGVF
bGVtZW50KQogewogICAgIC8vIElmIGluc2VydGluZyB0aGUgZHJhZ2dlZCBjb250ZW50cyByZW1v
dmVkIHRoZSBkcmFnIHNvdXJjZSwgd2Ugc3RpbGwgd2FudCB0byBmaXJlIGRyYWdlbmQgYXQgdGhl
IHJvb3QgZWRpdGFibGUgZWxlbWVudC4KLSAgICBpZiAoZHJhZ1N0YXRlKCkuc291cmNlICYmICFk
cmFnU3RhdGUoKS5zb3VyY2UtPmluRG9jdW1lbnQoKSkKKyAgICBpZiAoZHJhZ1N0YXRlKCkuc291
cmNlICYmICFkcmFnU3RhdGUoKS5zb3VyY2UtPmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIGRyYWdT
dGF0ZSgpLnNvdXJjZSA9ICZyb290RWRpdGFibGVFbGVtZW50OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKaW5kZXggMzFjYzY1OWU0YjllMGNi
OGViMTMzYTMyMTVjMDc3ZWIzNmM2NDY2OC4uMjZiM2NiZmM3M2U3YjY1NDdiZThjNGY5YzczMTdi
YzU3ODQ1NjQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0Nv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9s
bGVyLmNwcApAQCAtNDgsNyArNDgsNyBAQCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OlBvaW50ZXJM
b2NrQ29udHJvbGxlcihQYWdlJiBwYWdlKQogCiB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6
cmVxdWVzdFBvaW50ZXJMb2NrKEVsZW1lbnQqIHRhcmdldCkKIHsKLSAgICBpZiAoIXRhcmdldCB8
fCAhdGFyZ2V0LT5pbkRvY3VtZW50KCkgfHwgbV9kb2N1bWVudE9mUmVtb3ZlZEVsZW1lbnRXaGls
ZVdhaXRpbmdGb3JVbmxvY2spIHsKKyAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0LT5pc0Nvbm5l
Y3RlZCgpIHx8IG1fZG9jdW1lbnRPZlJlbW92ZWRFbGVtZW50V2hpbGVXYWl0aW5nRm9yVW5sb2Nr
KSB7CiAgICAgICAgIGVucXVldWVFdmVudChldmVudE5hbWVzKCkucG9pbnRlcmxvY2tlcnJvckV2
ZW50LCB0YXJnZXQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDc2NzlhNDg1NzViYjQ0ZGQwN2FhMjBkOThj
MjNlMzIxMmM4NzcxNmEuLmQyMjU4NWEwMzI1ZmFlYTYwZWRmZDJkN2YwMGY2ODhkODk0MjhjOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTc1NSwx
MSArNzU1LDExIEBAIE5vZGUqIEhpdFRlc3RSZXN1bHQ6OnRhcmdldE5vZGUoKSBjb25zdAogICAg
IE5vZGUqIG5vZGUgPSBpbm5lck5vZGUoKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVy
biAwOwotICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkpCisgICAgaWYgKG5vZGUtPmlzQ29ubmVj
dGVkKCkpCiAgICAgICAgIHJldHVybiBub2RlOwogCiAgICAgRWxlbWVudCogZWxlbWVudCA9IG5v
ZGUtPnBhcmVudEVsZW1lbnQoKTsKLSAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pbkRvY3Vt
ZW50KCkpCisgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNDb25uZWN0ZWQoKSkKICAgICAg
ICAgcmV0dXJuIGVsZW1lbnQ7CiAKICAgICByZXR1cm4gbm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCmluZGV4
IDBiYTliZDdmNjBlMWE0Y2VkOWM1NDRhY2QxZDA2OTk3M2IwZDA0NWYuLjJjMzM4NWQ1MDk1ZDQz
NDAyYmUxODI4ZTAyY2Q3ZTUxY2JmOGIxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcApAQCAtMzksNyArMzks
NyBAQCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUoSFRNTFRleHRBcmVhRWxlbWVudCYgZWxlbQogCiBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZTo6flJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKCkKIHsKLSAgICBpZiAodGV4dEFyZWFFbGVt
ZW50KCkuaW5Eb2N1bWVudCgpKQorICAgIGlmICh0ZXh0QXJlYUVsZW1lbnQoKS5pc0Nvbm5lY3Rl
ZCgpKQogICAgICAgICB0ZXh0QXJlYUVsZW1lbnQoKS5yZW5kZXJlcldpbGxCZURlc3Ryb3llZCgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKaW5kZXgg
YmRjYWVkZjg0ZTVjOGRjNDVkMGRmMmQ4ZTQ0MzY4ZGI3NzliMzBiMC4uNWViZTU4MzY3MDFmYzJm
Yzk0YzIxNTA0ODZiNTk5MTZlZDk4YjhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVw
bGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBs
YXlDb250cm9sbGVyLmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgdm9pZCBsb2dEaXNwYXRj
aGVkRE9NRXZlbnQoY29uc3QgRXZlbnQmIGV2ZW50LCBib29sIGV2ZW50SXNVbnJlbGF0ZWQpCiAg
ICAgICAgIExPRyhXZWJSZXBsYXksICIlLTIwcyAtLS0+JXMgRE9NIGV2ZW50OiB0eXBlPSVzLCB0
YXJnZXQ9JXUvbm9kZVslcF0gJXNcbiIsICJSZXBsYXlFdmVudHMiLAogICAgICAgICAgICAgKGV2
ZW50SXNVbnJlbGF0ZWQpID8gIlVucmVsYXRlZCIgOiAiRGlzcGF0Y2hpbmciLAogICAgICAgICAg
ICAgZXZlbnQudHlwZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCi0gICAgICAgICAgICBmcmFt
ZUluZGV4RnJvbURvY3VtZW50KChub2RlLT5pbkRvY3VtZW50KCkpID8gJm5vZGUtPmRvY3VtZW50
KCkgOiBub2RlLT5vd25lckRvY3VtZW50KCkpLAorICAgICAgICAgICAgZnJhbWVJbmRleEZyb21E
b2N1bWVudCgobm9kZS0+aXNDb25uZWN0ZWQoKSkgPyAmbm9kZS0+ZG9jdW1lbnQoKSA6IG5vZGUt
Pm93bmVyRG9jdW1lbnQoKSksCiAgICAgICAgICAgICBub2RlLAogICAgICAgICAgICAgbm9kZS0+
bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKICAgICB9IGVsc2UgaWYgKERPTVdpbmRvdyogd2lu
ZG93ID0gdGFyZ2V0LT50b0RPTVdpbmRvdygpKSB7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBS
ZXBsYXlDb250cm9sbGVyOjp3aWxsRGlzcGF0Y2hFdmVudChjb25zdCBFdmVudCYgZXZlbnQsIEZy
YW1lKiBmcmFtZSkKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSA/IGZyYW1lLT5kb2N1
bWVudCgpIDogbnVsbHB0cjsKICAgICAvLyBGZXRjaCB0aGUgZG9jdW1lbnQgZnJvbSB0aGUgZXZl
bnQgdGFyZ2V0LCBiZWNhdXNlIHRoZSB0YXJnZXQgY291bGQgYmUgZGV0YWNoZWQuCiAgICAgaWYg
KE5vZGUqIG5vZGUgPSB0YXJnZXQtPnRvTm9kZSgpKQotICAgICAgICBkb2N1bWVudCA9IG5vZGUt
PmluRG9jdW1lbnQoKSA/ICZub2RlLT5kb2N1bWVudCgpIDogbm9kZS0+b3duZXJEb2N1bWVudCgp
OworICAgICAgICBkb2N1bWVudCA9IG5vZGUtPmlzQ29ubmVjdGVkKCkgPyAmbm9kZS0+ZG9jdW1l
bnQoKSA6IG5vZGUtPm93bmVyRG9jdW1lbnQoKTsKICAgICBlbHNlIGlmIChET01XaW5kb3cqIHdp
bmRvdyA9IHRhcmdldC0+dG9ET01XaW5kb3coKSkKICAgICAgICAgZG9jdW1lbnQgPSB3aW5kb3ct
PmRvY3VtZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2Nv
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKaW5kZXggMzI5MDQ4
YjBiNjc0OTE0MzEyNGJmYTYzZTY1NGZhNTkzMzdiOWJmZi4uOWU4YjcxZDRjNjczOTcwYTM5Y2E0
ODYxYmI3ZTc1MmIzYzQxN2UwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKQEAg
LTExNyw3ICsxMTcsNyBAQCB2b2lkIFNjb3BlOjpjbGVhclJlc29sdmVyKCkKIAogU2NvcGUmIFNj
b3BlOjpmb3JOb2RlKE5vZGUmIG5vZGUpCiB7Ci0gICAgQVNTRVJUKG5vZGUuaW5Eb2N1bWVudCgp
KTsKKyAgICBBU1NFUlQobm9kZS5pc0Nvbm5lY3RlZCgpKTsKICAgICBhdXRvKiBzaGFkb3dSb290
ID0gbm9kZS5jb250YWluaW5nU2hhZG93Um9vdCgpOwogICAgIGlmIChzaGFkb3dSb290KQogICAg
ICAgICByZXR1cm4gc2hhZG93Um9vdC0+c3R5bGVTY29wZSgpOwpAQCAtMTkyLDcgKzE5Miw3IEBA
IHZvaWQgU2NvcGU6OnJlbW92ZVBlbmRpbmdTaGVldChSZW1vdmVQZW5kaW5nU2hlZXROb3RpZmlj
YXRpb25UeXBlIG5vdGlmaWNhdGlvbikKIAogdm9pZCBTY29wZTo6YWRkU3R5bGVTaGVldENhbmRp
ZGF0ZU5vZGUoTm9kZSYgbm9kZSwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiB7Ci0gICAgaWYgKCFu
b2RlLmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIW5vZGUuaXNDb25uZWN0ZWQoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIAogICAgIC8vIFVudGlsIHRoZSA8Ym9keT4gZXhpc3RzLCB3ZSBoYXZlIG5v
IGNob2ljZSBidXQgdG8gY29tcGFyZSBkb2N1bWVudCBwb3NpdGlvbnMsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggYzU5ZjUzZjJmMDQ2ODVlNjg2YTgz
NDNhMjIzY2FiYjJiOTY1YzE5Mi4uMDdjYTljMzk2OTIxZmE2YmNlMTUyZDQ5Zjk2YWNmNWEyNWQz
Zjc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcApAQCAt
Mzc4LDcgKzM3OCw3IEBAIHZvaWQgVHJlZVJlc29sdmVyOjpyZXNvbHZlQ29tcG9zZWRUcmVlKCkK
ICAgICAgICAgYXV0byYgbm9kZSA9ICppdDsKICAgICAgICAgYXV0byYgcGFyZW50ID0gdGhpcy0+
cGFyZW50KCk7CiAKLSAgICAgICAgQVNTRVJUKG5vZGUuaW5Eb2N1bWVudCgpKTsKKyAgICAgICAg
QVNTRVJUKG5vZGUuaXNDb25uZWN0ZWQoKSk7CiAgICAgICAgIEFTU0VSVChub2RlLmNvbnRhaW5p
bmdTaGFkb3dSb290KCkgPT0gc2NvcGUoKS5zaGFkb3dSb290KTsKICAgICAgICAgQVNTRVJUKG5v
ZGUucGFyZW50RWxlbWVudCgpID09IHBhcmVudC5lbGVtZW50IHx8IGlzPFNoYWRvd1Jvb3Q+KG5v
ZGUucGFyZW50Tm9kZSgpKSB8fCBub2RlLnBhcmVudEVsZW1lbnQoKS0+c2hhZG93Um9vdCgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAppbmRleCBm
YjdkOWE2ZmNhOTJmZmM2ZWFmZTk1ZWYyM2JkNDQxN2MyZjc0M2QwLi4xMWFlN2E5ODEyYjlhNDJh
N2FkY2NiMjIzZjhiMjk0Yzk4MDFmZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlLmNwcApAQCAtMjUxLDggKzI1MSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCByZW1vdmVDU1NQcm9wZXJ0eUZyb21UYXJnZXQoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCwg
Q1NTUHJvCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBseUNTU1Byb3BlcnR5VG9UYXJnZXRBbmRJ
bnN0YW5jZXMoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nKQogewotICAgIC8vIEZJ
WE1FOiBEbyB3ZSByZWFsbHkgbmVlZCB0byBjaGVjayBib3RoIGluRG9jdW1lbnQgYW5kICFwYXJl
bnROb2RlPwotICAgIGlmIChhdHRyaWJ1dGVOYW1lID09IGFueVFOYW1lKCkgfHwgIXRhcmdldEVs
ZW1lbnQuaW5Eb2N1bWVudCgpIHx8ICF0YXJnZXRFbGVtZW50LnBhcmVudE5vZGUoKSkKKyAgICAv
LyBGSVhNRTogRG8gd2UgcmVhbGx5IG5lZWQgdG8gY2hlY2sgYm90aCBpc0Nvbm5lY3RlZCBhbmQg
IXBhcmVudE5vZGU/CisgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gYW55UU5hbWUoKSB8fCAhdGFy
Z2V0RWxlbWVudC5pc0Nvbm5lY3RlZCgpIHx8ICF0YXJnZXRFbGVtZW50LnBhcmVudE5vZGUoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQ1NTUHJvcGVydHlJRCBpZCA9IGNzc1Byb3BlcnR5SUQo
YXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSk7CkBAIC0yNjcsOCArMjY3LDggQEAgc3RhdGljIGlu
bGluZSB2b2lkIGFwcGx5Q1NTUHJvcGVydHlUb1RhcmdldEFuZEluc3RhbmNlcyhTVkdFbGVtZW50
JiB0YXJnZXRFbGVtZW4KIAogc3RhdGljIGlubGluZSB2b2lkIHJlbW92ZUNTU1Byb3BlcnR5RnJv
bVRhcmdldEFuZEluc3RhbmNlcyhTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogewotICAgIC8vIEZJWE1FOiBEbyB3ZSByZWFsbHkg
bmVlZCB0byBjaGVjayBib3RoIGluRG9jdW1lbnQgYW5kICFwYXJlbnROb2RlPwotICAgIGlmIChh
dHRyaWJ1dGVOYW1lID09IGFueVFOYW1lKCkgfHwgIXRhcmdldEVsZW1lbnQuaW5Eb2N1bWVudCgp
IHx8ICF0YXJnZXRFbGVtZW50LnBhcmVudE5vZGUoKSkKKyAgICAvLyBGSVhNRTogRG8gd2UgcmVh
bGx5IG5lZWQgdG8gY2hlY2sgYm90aCBpc0Nvbm5lY3RlZCBhbmQgIXBhcmVudE5vZGU/CisgICAg
aWYgKGF0dHJpYnV0ZU5hbWUgPT0gYW55UU5hbWUoKSB8fCAhdGFyZ2V0RWxlbWVudC5pc0Nvbm5l
Y3RlZCgpIHx8ICF0YXJnZXRFbGVtZW50LnBhcmVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgQ1NTUHJvcGVydHlJRCBpZCA9IGNzc1Byb3BlcnR5SUQoYXR0cmlidXRlTmFtZS5sb2Nh
bE5hbWUoKSk7CkBAIC0yODksNyArMjg5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIG5vdGlmeVRh
cmdldEFib3V0QW5pbVZhbENoYW5nZShTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50LCBjb24KIAog
c3RhdGljIGlubGluZSB2b2lkIG5vdGlmeVRhcmdldEFuZEluc3RhbmNlc0Fib3V0QW5pbVZhbENo
YW5nZShTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKQogewotICAgIGlmIChhdHRyaWJ1dGVOYW1lID09IGFueVFOYW1lKCkgfHwgIXRh
cmdldEVsZW1lbnQuaW5Eb2N1bWVudCgpIHx8ICF0YXJnZXRFbGVtZW50LnBhcmVudE5vZGUoKSkK
KyAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSBhbnlRTmFtZSgpIHx8ICF0YXJnZXRFbGVtZW50Lmlz
Q29ubmVjdGVkKCkgfHwgIXRhcmdldEVsZW1lbnQucGFyZW50Tm9kZSgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBTVkdFbGVtZW50OjpJbnN0YW5jZVVwZGF0ZUJsb2NrZXIgYmxvY2tlcih0YXJn
ZXRFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCA3MjlkNTg4YjQ5NGVi
OWU2NzU0ZTA1MzRjZDk1ODRhYThhZWYzZjJkLi5mZGMxMGVmNjY3MTU2YTllMDMxMmFmNWUzZGM0
MDZhOTRmNDJkYTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0zNjMsNyArMzYz
LDcgQEAgdm9pZCBTVkdFbGVtZW50OjpyZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IoU1ZHUGFy
c2luZ0Vycm9yIGVycm9yLCBjb25zdCBRdWFsaWYKIAogdm9pZCBTVkdFbGVtZW50OjpyZW1vdmVk
RnJvbShDb250YWluZXJOb2RlJiByb290UGFyZW50KQogewotICAgIGJvb2wgd2FzSW5Eb2N1bWVu
dCA9IHJvb3RQYXJlbnQuaW5Eb2N1bWVudCgpOworICAgIGJvb2wgd2FzSW5Eb2N1bWVudCA9IHJv
b3RQYXJlbnQuaXNDb25uZWN0ZWQoKTsKICAgICBpZiAod2FzSW5Eb2N1bWVudCkKICAgICAgICAg
dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oZmFsc2UsIHRoaXMpOwogCkBAIC05Nzcs
NyArOTc3LDcgQEAgdm9pZCBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICAvLyBOb3RpZnkgcmVzb3VyY2VzIGFib3V0
IGlkIGNoYW5nZXMsIHRoaXMgaXMgaW1wb3J0YW50IGFzIHdlIGNhY2hlIHJlc291cmNlcyBieSBp
ZCBpbiBTVkdEb2N1bWVudEV4dGVuc2lvbnMKICAgICAgICAgaWYgKGlzPFJlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyPihyZW5kZXJlcikpCiAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lcj4oKnJlbmRlcmVyKS5pZENoYW5nZWQoKTsKLSAgICAgICAgaWYgKGlu
RG9jdW1lbnQoKSkKKyAgICAgICAgaWYgKGlzQ29ubmVjdGVkKCkpCiAgICAgICAgICAgICBidWls
ZFBlbmRpbmdSZXNvdXJjZXNJZk5lZWRlZCgpOwogICAgICAgICBpbnZhbGlkYXRlSW5zdGFuY2Vz
KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTk5NCw3ICs5OTQsNyBAQCBOb2RlOjpJbnNlcnRpb25O
b3RpZmljYXRpb25SZXF1ZXN0IFNWR0VsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2Rl
JiByb290UAogCiB2b2lkIFNWR0VsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlc0lmTmVlZGVk
KCkKIHsKLSAgICBpZiAoIW5lZWRzUGVuZGluZ1Jlc291cmNlSGFuZGxpbmcoKSB8fCAhaW5Eb2N1
bWVudCgpIHx8IGlzSW5TaGFkb3dUcmVlKCkpCisgICAgaWYgKCFuZWVkc1BlbmRpbmdSZXNvdXJj
ZUhhbmRsaW5nKCkgfHwgIWlzQ29ubmVjdGVkKCkgfHwgaXNJblNoYWRvd1RyZWUoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgU1ZHRG9jdW1lbnRFeHRlbnNpb25zJiBleHRlbnNpb25zID0gZG9j
dW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCk7CkBAIC0xMDY3LDcgKzEwNjcsNyBAQCBBZmZp
bmVUcmFuc2Zvcm0gU1ZHRWxlbWVudDo6bG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZH
TG9jYXRhYmxlOjpDVE1TY29wZQogdm9pZCBTVkdFbGVtZW50Ojp1cGRhdGVSZWxhdGl2ZUxlbmd0
aHNJbmZvcm1hdGlvbihib29sIGhhc1JlbGF0aXZlTGVuZ3RocywgU1ZHRWxlbWVudCogZWxlbWVu
dCkKIHsKICAgICAvLyBJZiB3ZSdyZSBub3QgeWV0IGluIGEgZG9jdW1lbnQsIHRoaXMgZnVuY3Rp
b24gd2lsbCBiZSBjYWxsZWQgYWdhaW4gZnJvbSBpbnNlcnRlZEludG8oKS4gRG8gbm90aGluZyBu
b3cuCi0gICAgaWYgKCFpbkRvY3VtZW50KCkpCisgICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBBbiBlbGVtZW50IHdhbnRzIHRvIG5vdGlmeSB1cyB0aGF0
IGl0cyBvd24gcmVsYXRpdmUgbGVuZ3RocyBzdGF0ZSBjaGFuZ2VkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwCmluZGV4IDlmODU5
YThjMWU2NjY0MzlhMmYzYmEyZWIxNDYwOGM4NjI0YjU1NjMuLmIwZDM4ZWNhYTkyZTBhODUwMDUz
OTU3NmVmYTk3MDAxMTQwYWNmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgYm9vbCBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoU1ZHRWxlbWVu
dCogdGFyZ2V0RWxlbWUKICAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7CiAgICAgaWYgKCFpc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgh
dGFyZ2V0RWxlbWVudC0+aW5Eb2N1bWVudCgpKQorICAgIGlmICghdGFyZ2V0RWxlbWVudC0+aXND
b25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBIYW5kbGUgZHluYW1p
YyB1cGRhdGVzIG9mIHRoZSAnZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCcgYXR0cmlidXRlLiBP
bmx5IHBvc3NpYmxlIGNhc2U6IGNoYW5naW5nIGZyb20gJ3RydWUnIHRvICdmYWxzZScKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGMyY2Q2ZjY1YjMwYjdhMGJl
ZjQ0NzhkNWFjNDcwOWVkOWNmZDIxYTIuLjE5ZWY2M2IyOWE5NDI5NzllYjk4YWY2NzdhYTI2YTIz
MWRhNWY3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAt
OTgsNyArOTgsNyBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpyZXF1ZXN0SW1hZ2VSZXNvdXJj
ZSgpCiB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiB7CiAg
ICAgY2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsKLSAgICBpZiAoIWluRG9jdW1lbnQoKSkKKyAg
ICBpZiAoIWlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBpZDsK
QEAgLTE2NCwxMyArMTY0LDEzIEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmZpbmlzaGVkSW5z
ZXJ0aW5nU3VidHJlZSgpCiB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpyZW1vdmVkRnJvbShDb250
YWluZXJOb2RlJiByb290UGFyZW50KQogewogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6cmVtb3ZlZEZyb20ocm9vdFBhcmVudCk7Ci0gICAgaWYgKHJvb3RQYXJlbnQu
aW5Eb2N1bWVudCgpKQorICAgIGlmIChyb290UGFyZW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAg
IGNsZWFyUmVzb3VyY2VSZWZlcmVuY2VzKCk7CiB9CiAKIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikKIHsKLSAgICBpZiAoIWluRG9jdW1lbnQo
KSkKKyAgICBpZiAoIWlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1l
bnQqIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRG
YWNlRWxlbWVudC5jcHAKaW5kZXggNjQ3NGI5YTQyYjhkNjM3YWQ2N2QzNjI2NDUzNWU5YjM4ODhi
YzVmZC4uNGE5M2M3ZTI4MDlhYjliOGEzMWQ2MDg1YjZhYzE4NDMwM2I2MTYyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBT
VkdGb250RWxlbWVudCogU1ZHRm9udEZhY2VFbGVtZW50Ojphc3NvY2lhdGVkRm9udEVsZW1lbnQo
KSBjb25zdAogCiB2b2lkIFNWR0ZvbnRGYWNlRWxlbWVudDo6cmVidWlsZEZvbnRGYWNlKCkKIHsK
LSAgICBpZiAoIWluRG9jdW1lbnQoKSkgeworICAgIGlmICghaXNDb25uZWN0ZWQoKSkgewogICAg
ICAgICBBU1NFUlQoIW1fZm9udEVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MjczLDcgKzI3Myw3IEBAIHZvaWQgU1ZHRm9udEZhY2VFbGVtZW50OjpyZWJ1aWxkRm9udEZhY2Uo
KQogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTVkdGb250RmFjZUVsZW1lbnQ6
Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiByb290UGFyZW50KQogewogICAgIFNWR0VsZW1l
bnQ6Omluc2VydGVkSW50byhyb290UGFyZW50KTsKLSAgICBpZiAoIXJvb3RQYXJlbnQuaW5Eb2N1
bWVudCgpKSB7CisgICAgaWYgKCFyb290UGFyZW50LmlzQ29ubmVjdGVkKCkpIHsKICAgICAgICAg
QVNTRVJUKCFtX2ZvbnRFbGVtZW50KTsKICAgICAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiAg
ICAgfQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgU1ZHRm9udEZhY2VFbGVtZW50OjpyZW1vdmVk
RnJvbShDb250YWluZXJOb2RlJiByb290UGFyZW50KQogewogICAgIFNWR0VsZW1lbnQ6OnJlbW92
ZWRGcm9tKHJvb3RQYXJlbnQpOwogCi0gICAgaWYgKHJvb3RQYXJlbnQuaW5Eb2N1bWVudCgpKSB7
CisgICAgaWYgKHJvb3RQYXJlbnQuaXNDb25uZWN0ZWQoKSkgewogICAgICAgICBtX2ZvbnRFbGVt
ZW50ID0gbnVsbHB0cjsKICAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCku
dW5yZWdpc3RlclNWR0ZvbnRGYWNlRWxlbWVudCh0aGlzKTsKICAgICAgICAgbV9mb250RmFjZVJ1
bGUtPm11dGFibGVQcm9wZXJ0aWVzKCkuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAKaW5kZXggZGNjOGM2ODc4YWYzNmY0YmNlOTdmN2IzMGE5ZTRjOWMxY2ExM2M3
ZC4uYjM2MWI3NDFlOTIzOGM5NWYzMmEzNGNkMzgzNTYzNWE5MWViOWI4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIFNWR0lt
YWdlRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKCkKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNh
dGlvblJlcXVlc3QgU1ZHSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYg
cm9vdFBhcmVudCkKIHsKICAgICBTVkdHcmFwaGljc0VsZW1lbnQ6Omluc2VydGVkSW50byhyb290
UGFyZW50KTsKLSAgICBpZiAoIXJvb3RQYXJlbnQuaW5Eb2N1bWVudCgpKQorICAgIGlmICghcm9v
dFBhcmVudC5pc0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKICAg
ICAvLyBVcGRhdGUgaW1hZ2UgbG9hZGVyLCBhcyBzb29uIGFzIHdlJ3JlIGxpdmluZyBpbiB0aGUg
dHJlZS4KICAgICAvLyBXZSBjYW4gb25seSByZXNvbHZlIGJhc2UgVVJJcyBwcm9wZXJseSwgYWZ0
ZXIgdGhhdCEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAKaW5kZXggNTVjMGU2
ODdjNWM5Y2U4Nzg0YjBmNzExZTcxNTAyMDA5MDI5NjcyOS4uZmY3ZDQ4NzJkNjk0NTY3ZTc1MmMz
ZmNmYTcwOTBmN2NmY2RhNDcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01Q
YXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5j
cHAKQEAgLTU4LDcgKzU4LDcgQEAgU1ZHTVBhdGhFbGVtZW50Ojp+U1ZHTVBhdGhFbGVtZW50KCkK
IHZvaWQgU1ZHTVBhdGhFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiB7CiAgICAgY2xl
YXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsKLSAgICBpZiAoIWluRG9jdW1lbnQoKSkKKyAgICBpZiAo
IWlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBpZDsKQEAgLTg5
LDcgKzg5LDcgQEAgdm9pZCBTVkdNUGF0aEVsZW1lbnQ6OmNsZWFyUmVzb3VyY2VSZWZlcmVuY2Vz
KCkKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU1ZHTVBhdGhFbGVtZW50Ojpp
bnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYgcm9vdFBhcmVudCkKIHsKICAgICBTVkdFbGVtZW50
OjppbnNlcnRlZEludG8ocm9vdFBhcmVudCk7Ci0gICAgaWYgKHJvb3RQYXJlbnQuaW5Eb2N1bWVu
dCgpKQorICAgIGlmIChyb290UGFyZW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybiBJ
bnNlcnRpb25TaG91bGRDYWxsRmluaXNoZWRJbnNlcnRpbmdTdWJ0cmVlOwogICAgIHJldHVybiBJ
bnNlcnRpb25Eb25lOwogfQpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgU1ZHTVBhdGhFbGVtZW50
OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiByb290UGFyZW50KQogewogICAgIFNWR0VsZW1l
bnQ6OnJlbW92ZWRGcm9tKHJvb3RQYXJlbnQpOwogICAgIG5vdGlmeVBhcmVudE9mUGF0aENoYW5n
ZSgmcm9vdFBhcmVudCk7Ci0gICAgaWYgKHJvb3RQYXJlbnQuaW5Eb2N1bWVudCgpKQorICAgIGlm
IChyb290UGFyZW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIGNsZWFyUmVzb3VyY2VSZWZlcmVu
Y2VzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCAwNzQxMjk3
ZTBkYTBlMWYwMTZiZGEyZjhlOWQ4NDI3ZWU1NzEwMjdlLi4xYmU3Mzc4NjhjZjcwY2UxMzdkZTUx
NGQyOTM4ZTFhMDBmMDEwZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBA
IC0xNjgsNyArMTY4LDcgQEAgRnJhbWUqIFNWR1NWR0VsZW1lbnQ6OmZyYW1lRm9yQ3VycmVudFNj
YWxlKCkgY29uc3QKIHsKICAgICAvLyBUaGUgYmVoYXZpb3Igb2YgY3VycmVudFNjYWxlKCkgaXMg
dW5kZWZpbmVkIHdoZW4gd2UncmUgZGVhbGluZyB3aXRoIG5vbi1zdGFuZGFsb25lIFNWRyBkb2N1
bWVudHMuCiAgICAgLy8gSWYgdGhlIGRvY3VtZW50IGlzIGVtYmVkZGVkLCB0aGUgc2NhbGluZyBp
cyBoYW5kbGVkIGJ5IHRoZSBob3N0IHJlbmRlcmVyLgotICAgIGlmICghaW5Eb2N1bWVudCgpIHx8
ICFpc091dGVybW9zdFNWR1NWR0VsZW1lbnQoKSkKKyAgICBpZiAoIWlzQ29ubmVjdGVkKCkgfHwg
IWlzT3V0ZXJtb3N0U1ZHU1ZHRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgcmV0dXJuIGZyYW1lICYm
IGZyYW1lLT5pc01haW5GcmFtZSgpID8gZnJhbWUgOiBudWxscHRyOwpAQCAtNDY2LDcgKzQ2Niw3
IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTVkdFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsCiAKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlv
blJlcXVlc3QgU1ZHU1ZHRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIHJvb3RQ
YXJlbnQpCiB7Ci0gICAgaWYgKHJvb3RQYXJlbnQuaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKHJv
b3RQYXJlbnQuaXNDb25uZWN0ZWQoKSkgewogICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4
dGVuc2lvbnMoKS5hZGRUaW1lQ29udGFpbmVyKHRoaXMpOwogCiAgICAgICAgIC8vIEFuaW1hdGlv
bnMgYXJlIHN0YXJ0ZWQgYXQgdGhlIGVuZCBvZiBkb2N1bWVudCBwYXJzaW5nIGFuZCBhZnRlciBm
aXJpbmcgdGhlIGxvYWQgZXZlbnQsCkBAIC00ODAsNyArNDgwLDcgQEAgTm9kZTo6SW5zZXJ0aW9u
Tm90aWZpY2F0aW9uUmVxdWVzdCBTVkdTVkdFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVy
Tm9kZSYgcm8KIAogdm9pZCBTVkdTVkdFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2Rl
JiByb290UGFyZW50KQogewotICAgIGlmIChyb290UGFyZW50LmluRG9jdW1lbnQoKSkKKyAgICBp
ZiAocm9vdFBhcmVudC5pc0Nvbm5lY3RlZCgpKQogICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NW
R0V4dGVuc2lvbnMoKS5yZW1vdmVUaW1lQ29udGFpbmVyKHRoaXMpOwogICAgIFNWR0dyYXBoaWNz
RWxlbWVudDo6cmVtb3ZlZEZyb20ocm9vdFBhcmVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U2NyaXB0RWxlbWVudC5jcHAKaW5kZXggNjY5YWRhZWQ4MTY1N2Q4YzAyZDhjM2U2OTVjZTI2MTRl
NWQ2YjI5Mi4uNDE0YzU1Y2E4MTgyYTI2ZTIwZDI0MzIwMmM1ZmZkNTFkNDRkZWJjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lk
IFNWR1NjcmlwdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNWR1Njcmlw
dEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiByb290UGFyZW50KQogewogICAg
IFNWR0VsZW1lbnQ6Omluc2VydGVkSW50byhyb290UGFyZW50KTsKLSAgICBpZiAocm9vdFBhcmVu
dC5pbkRvY3VtZW50KCkpCisgICAgaWYgKHJvb3RQYXJlbnQuaXNDb25uZWN0ZWQoKSkKICAgICAg
ICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQodGhp
cyk7CiAgICAgcmV0dXJuIHNob3VsZENhbGxGaW5pc2hlZEluc2VydGluZ1N1YnRyZWUocm9vdFBh
cmVudCkgPyBJbnNlcnRpb25TaG91bGRDYWxsRmluaXNoZWRJbnNlcnRpbmdTdWJ0cmVlIDogSW5z
ZXJ0aW9uRG9uZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKaW5kZXgg
MGEyZTE1ZmVhYjQ1MzY4NzgzMzk3ZmI2NTZmNTExMDNjZWZjMzIwOS4uOGY4ZjllZjgwYTI0YWZi
N2ZjYjI3NzFiZDExMzJiZTE3NDY4OWJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N0eWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxl
bWVudC5jcHAKQEAgLTExNSw5ICsxMTUsOSBAQCB2b2lkIFNWR1N0eWxlRWxlbWVudDo6ZmluaXNo
UGFyc2luZ0NoaWxkcmVuKCkKIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBT
VkdTdHlsZUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiByb290UGFyZW50KQog
ewotICAgIGJvb2wgd2FzSW5Eb2N1bWVudCA9IGluRG9jdW1lbnQoKTsKKyAgICBib29sIHdhc0lu
RG9jdW1lbnQgPSBpc0Nvbm5lY3RlZCgpOwogICAgIGF1dG8gcmVzdWx0ID0gU1ZHRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvKHJvb3RQYXJlbnQpOwotICAgIGlmIChyb290UGFyZW50LmluRG9jdW1lbnQo
KSAmJiAhd2FzSW5Eb2N1bWVudCkKKyAgICBpZiAocm9vdFBhcmVudC5pc0Nvbm5lY3RlZCgpICYm
ICF3YXNJbkRvY3VtZW50KQogICAgICAgICBtX3N0eWxlU2hlZXRPd25lci5pbnNlcnRlZEludG9E
b2N1bWVudCgqdGhpcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEyNSw3ICsxMjUsNyBA
QCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNWR1N0eWxlRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmCiB2b2lkIFNWR1N0eWxlRWxlbWVudDo6cmVtb3ZlZEZy
b20oQ29udGFpbmVyTm9kZSYgcm9vdFBhcmVudCkKIHsKICAgICBTVkdFbGVtZW50OjpyZW1vdmVk
RnJvbShyb290UGFyZW50KTsKLSAgICBpZiAocm9vdFBhcmVudC5pbkRvY3VtZW50KCkgJiYgIWlu
RG9jdW1lbnQoKSkKKyAgICBpZiAocm9vdFBhcmVudC5pc0Nvbm5lY3RlZCgpICYmICFpc0Nvbm5l
Y3RlZCgpKQogICAgICAgICBtX3N0eWxlU2hlZXRPd25lci5yZW1vdmVkRnJvbURvY3VtZW50KCp0
aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKaW5kZXggZmJlN2E2
MTQxZWEwY2RiNzAwNGExNTU2MTExMjVlZWJlNzZhODMwNS4uYTRmZjQ2YWIwZTcyMGRmYzNkMjFi
ZTA1OWNiOTY4ODJlY2JhNjNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RS
ZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3Bw
CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmF0dGFj
aChSZWZQdHI8RWxlbWVudD4mJiB0YXJnZXQpCiB7CiAgICAgQVNTRVJUKCFpc0F0dGFjaGVkKCkp
OwogICAgIEFTU0VSVCh0YXJnZXQuZ2V0KCkpOwotICAgIEFTU0VSVCh0YXJnZXQtPmluRG9jdW1l
bnQoKSk7CisgICAgQVNTRVJUKHRhcmdldC0+aXNDb25uZWN0ZWQoKSk7CiAKICAgICB0YXJnZXQt
PmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTVN1YnRyZWVNb2RpZmllZEV2ZW50LCAq
dGhpcywgZmFsc2UpOwogICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
RE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnRFdmVudCwgKnRoaXMsIGZhbHNlKTsKQEAgLTE2NCw3
ICsxNjQsNyBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpkZXRhY2hUYXJnZXQoKQogICAgIGlmIChj
b250YWluZXIpCiAgICAgICAgIGNvbnRhaW5lci0+c2V0VGV4dENvbnRlbnQoZW1wdHlDb250ZW50
KTsKIAotICAgIGlmICghaW5Eb2N1bWVudCgpKQorICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gTWFyayB0aGUgcmVmZXJlbmNlZCBJRCBhcyBwZW5kaW5n
LgpAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jl
c291cmNlKCkKICAgICBtX3RhcmdldExpc3RlbmVyLT5kZXRhY2goKTsKIAogICAgIC8vIElmIHdl
J3JlIG5vdCB5ZXQgaW4gYSBkb2N1bWVudCwgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBh
Z2FpbiBmcm9tIGluc2VydGVkSW50bygpLgotICAgIGlmICghaW5Eb2N1bWVudCgpKQorICAgIGlm
ICghaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGlkOwpAQCAt
MjU2LDcgKzI1Niw3IEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNl
KCkKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU1ZHVFJlZkVsZW1lbnQ6Omlu
c2VydGVkSW50byhDb250YWluZXJOb2RlJiByb290UGFyZW50KQogewogICAgIFNWR0VsZW1lbnQ6
Omluc2VydGVkSW50byhyb290UGFyZW50KTsKLSAgICBpZiAocm9vdFBhcmVudC5pbkRvY3VtZW50
KCkpCisgICAgaWYgKHJvb3RQYXJlbnQuaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuIElu
c2VydGlvblNob3VsZENhbGxGaW5pc2hlZEluc2VydGluZ1N1YnRyZWU7CiAgICAgcmV0dXJuIElu
c2VydGlvbkRvbmU7CiB9CkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6
ZmluaXNoZWRJbnNlcnRpbmdTdWJ0cmVlKCkKIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnJlbW92ZWRG
cm9tKENvbnRhaW5lck5vZGUmIHJvb3RQYXJlbnQpCiB7CiAgICAgU1ZHRWxlbWVudDo6cmVtb3Zl
ZEZyb20ocm9vdFBhcmVudCk7Ci0gICAgaWYgKHJvb3RQYXJlbnQuaW5Eb2N1bWVudCgpKQorICAg
IGlmIChyb290UGFyZW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIG1fdGFyZ2V0TGlzdGVuZXIt
PmRldGFjaCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcAppbmRleCA5NzVlNmExOTMyY2I5
ODUwNzU2NzYwODMyY2Y3Y2M3ODc0YTUwYzBkLi5lNDRjMzM0ZjE2NTE5YjliYTcwYjJmMGYwZjQ5
ZGNjMDM1YzkxOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKQEAgLTE5MSw3ICsxOTEsNyBA
QCBib29sIFNWR1Rlc3RzOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoU1ZHRWxlbWVudCogdGFyZ2V0
RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTgogICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50KTsKICAg
ICBpZiAoIWlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoIXRhcmdldEVsZW1lbnQtPmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIXRh
cmdldEVsZW1lbnQtPmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHRh
cmdldEVsZW1lbnQtPmludmFsaWRhdGVTdHlsZUFuZFJlbmRlcmVyc0ZvclN1YnRyZWUoKTsKICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0
aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAK
aW5kZXggOTJmODIyMzc2N2NhYjlkNjIwMTAyYWFlZWQzYTZmNzIyNWZlOWRiZi4uM2NkMmI4ZTdj
ODY5ZGYxOWYxMmJkMTllYzcyNDdhYzkwNTI2MmI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRQYXRoRWxlbWVudC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBib29sIFNWR1RleHRQYXRo
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB2b2lk
IFNWR1RleHRQYXRoRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogewogICAgIGNsZWFy
UmVzb3VyY2VSZWZlcmVuY2VzKCk7Ci0gICAgaWYgKCFpbkRvY3VtZW50KCkpCisgICAgaWYgKCFp
c0Nvbm5lY3RlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgaWQ7CkBAIC0xODcs
NyArMTg3LDcgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OmZpbmlzaGVkSW5zZXJ0aW5nU3Vi
dHJlZSgpCiB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9k
ZSYgcm9vdFBhcmVudCkKIHsKICAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnJlbW92ZWRGcm9t
KHJvb3RQYXJlbnQpOwotICAgIGlmIChyb290UGFyZW50LmluRG9jdW1lbnQoKSkKKyAgICBpZiAo
cm9vdFBhcmVudC5pc0Nvbm5lY3RlZCgpKQogICAgICAgICBjbGVhclJlc291cmNlUmVmZXJlbmNl
cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCmluZGV4IGE1OWY4
ZTUyYjMyY2U0MWQyOWI2NDRkNjRhYzNjYTQ1MTU5YjFjMzIuLmE0MzI5MmNmMDA4NjE0M2FlZmYy
ODA2OTE5NDQ2ZWMzNjA1YWRmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
aXRsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQu
Y3BwCkBAIC00Miw3ICs0Miw3IEBAIFJlZjxTVkdUaXRsZUVsZW1lbnQ+IFNWR1RpdGxlRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtCiBOb2RlOjpJbnNl
cnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNWR1RpdGxlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENv
bnRhaW5lck5vZGUmIHJvb3RQYXJlbnQpCiB7CiAgICAgU1ZHRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
KHJvb3RQYXJlbnQpOwotICAgIGlmICghcm9vdFBhcmVudC5pbkRvY3VtZW50KCkpCisgICAgaWYg
KCFyb290UGFyZW50LmlzQ29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybiBJbnNlcnRpb25Eb25l
OwogCiAgICAgaWYgKGZpcnN0Q2hpbGQoKSAmJiBkb2N1bWVudCgpLmlzU1ZHRG9jdW1lbnQoKSkK
QEAgLTUzLDcgKzUzLDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTVkdU
aXRsZUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJgogdm9pZCBTVkdUaXRsZUVs
ZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmIHJvb3RQYXJlbnQpCiB7CiAgICAgU1ZH
RWxlbWVudDo6cmVtb3ZlZEZyb20ocm9vdFBhcmVudCk7Ci0gICAgaWYgKHJvb3RQYXJlbnQuaW5E
b2N1bWVudCgpICYmIGRvY3VtZW50KCkuaXNTVkdEb2N1bWVudCgpKQorICAgIGlmIChyb290UGFy
ZW50LmlzQ29ubmVjdGVkKCkgJiYgZG9jdW1lbnQoKS5pc1NWR0RvY3VtZW50KCkpCiAgICAgICAg
IGRvY3VtZW50KCkudGl0bGVFbGVtZW50UmVtb3ZlZCgqdGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCBlNmI0ZWY2OTczZjM2MmFiOGRmZjU2ZTkzMDkxZGI5
ZGZkOGYyMTkyLi5lMWE4ZWY3ODdmOWZmZTY1NWVlMTM1Mjk1OTAyYmU4NjY3MzA3OTAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBT
VkdVc2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU1ZH
VXNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIHJvb3RQYXJlbnQpCiB7CiAg
ICAgU1ZHR3JhcGhpY3NFbGVtZW50OjppbnNlcnRlZEludG8ocm9vdFBhcmVudCk7Ci0gICAgaWYg
KGluRG9jdW1lbnQoKSkgeworICAgIGlmIChpc0Nvbm5lY3RlZCgpKSB7CiAgICAgICAgIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6Omluc2VydGVkSW50b0RvY3VtZW50KHRoaXMpOwogICAg
ICAgICBpbnZhbGlkYXRlU2hhZG93VHJlZSgpOwogICAgICAgICB1cGRhdGVFeHRlcm5hbERvY3Vt
ZW50KCk7CkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50Ojp1cGRhdGVTaGFk
b3dUcmVlKCkKICAgICAvLyBGSVhNRTogSXQncyBleHBlbnNpdmUgdG8gcmUtY2xvbmUgdGhlIGVu
dGlyZSB0cmVlIGV2ZXJ5IHRpbWUuIFdlIHNob3VsZCBmaW5kIGEgbW9yZSBlZmZpY2llbnQgd2F5
IHRvIGhhbmRsZSB0aGlzLgogICAgIGNsZWFyU2hhZG93VHJlZSgpOwogCi0gICAgaWYgKGlzSW5T
aGFkb3dUcmVlKCkgfHwgIWluRG9jdW1lbnQoKSkKKyAgICBpZiAoaXNJblNoYWRvd1RyZWUoKSB8
fCAhaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIHRhcmdldElE
OwpAQCAtMzI5LDcgKzMyOSw3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZURpc2FsbG93ZWRFbGVtZW50
c0Zyb21TdWJ0cmVlKFNWR0VsZW1lbnQmIHN1YnRyZWUpCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBp
cyB1c2VkIG9ubHkgb24gZWxlbWVudHMgaW4gc3VidHJlZXMgdGhhdCBhcmUgbm90IHlldCBpbiBk
b2N1bWVudHMsIHNvCiAgICAgLy8gbXV0YXRpb24gZXZlbnRzIGFyZSBub3QgYSBmYWN0b3I7IHRo
ZXJlIGFyZSBubyBldmVudCBsaXN0ZW5lcnMgdG8gaGFuZGxlIHRob3NlIGV2ZW50cy4KICAgICAv
LyBBc3NlcnQgdGhhdCBpdCdzIG5vdCBpbiBhIGRvY3VtZW50IHRvIG1ha2Ugc3VyZSBjYWxsZXJz
IGFyZSBzdGlsbCB1c2luZyBpdCB0aGlzIHdheS4KLSAgICBBU1NFUlQoIXN1YnRyZWUuaW5Eb2N1
bWVudCgpKTsKKyAgICBBU1NFUlQoIXN1YnRyZWUuaXNDb25uZWN0ZWQoKSk7CiAKICAgICBWZWN0
b3I8RWxlbWVudCo+IGRpc2FsbG93ZWRFbGVtZW50czsKICAgICBhdXRvIGRlc2NlbmRhbnRzID0g
ZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oc3VidHJlZSk7CkBAIC00MDksNyArNDA5LDcgQEAg
U1ZHRWxlbWVudCogU1ZHVXNlRWxlbWVudDo6ZmluZFRhcmdldChTdHJpbmcqIHRhcmdldElEKSBj
b25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvJiB0YXJnZXQgPSBkb3duY2Fz
dDxTVkdFbGVtZW50PigqdGFyZ2V0Q2FuZGlkYXRlKTsKIAotICAgIGlmICghdGFyZ2V0LmluRG9j
dW1lbnQoKSB8fCBpc0Rpc2FsbG93ZWRFbGVtZW50KHRhcmdldCkpCisgICAgaWYgKCF0YXJnZXQu
aXNDb25uZWN0ZWQoKSB8fCBpc0Rpc2FsbG93ZWRFbGVtZW50KHRhcmdldCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgLy8gUmVqZWN0IGFueSB0YXJnZXQgdGhhdCBoYXMgYWxyZWFk
eSBiZWVuIGNsb25lZCB0byBjcmVhdGUgb25lIG9mIHRoZSBhbmNlc3RvcnMgb2YgdGhpcyBlbGVt
ZW50LApAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6ZmluaXNoUGFyc2lu
Z0NoaWxkcmVuKCkKIHZvaWQgU1ZHVXNlRWxlbWVudDo6dXBkYXRlRXh0ZXJuYWxEb2N1bWVudCgp
CiB7CiAgICAgVVJMIGV4dGVybmFsRG9jdW1lbnRVUkw7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSAm
JiBpc0V4dGVybmFsVVJJUmVmZXJlbmNlKGhyZWYoKSwgZG9jdW1lbnQoKSkpIHsKKyAgICBpZiAo
aXNDb25uZWN0ZWQoKSAmJiBpc0V4dGVybmFsVVJJUmVmZXJlbmNlKGhyZWYoKSwgZG9jdW1lbnQo
KSkpIHsKICAgICAgICAgZXh0ZXJuYWxEb2N1bWVudFVSTCA9IGRvY3VtZW50KCkuY29tcGxldGVV
UkwoaHJlZigpKTsKICAgICAgICAgaWYgKCFleHRlcm5hbERvY3VtZW50VVJMLmhhc0ZyYWdtZW50
SWRlbnRpZmllcigpKQogICAgICAgICAgICAgZXh0ZXJuYWxEb2N1bWVudFVSTCA9IFVSTCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAppbmRl
eCA4MzJjYTBkMDBmMTFiOTFmZTRjNTZlYWUwZDY0MDJkY2UxNWJiYWI1Li4yNTUxYWY2MDAxODNk
NDNmYzg2ODgwOGQ3OWYyYTYwOTU3Zjk5N2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
YW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgU1ZH
U01JTEVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkKIHsKICAgICBjbGVhclJlc291cmNl
UmVmZXJlbmNlcygpOwogCi0gICAgaWYgKCFpbkRvY3VtZW50KCkpIHsKKyAgICBpZiAoIWlzQ29u
bmVjdGVkKCkpIHsKICAgICAgICAgLy8gUmVzZXQgdGhlIHRhcmdldCBlbGVtZW50IGlmIHdlIGFy
ZSBubyBsb25nZXIgaW4gdGhlIGRvY3VtZW50LgogICAgICAgICBzZXRUYXJnZXRFbGVtZW50KG51
bGxwdHIpOwogICAgICAgICByZXR1cm47CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBTVkdTTUlM
RWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogICAgICAgICB0YXJnZXQgPSBTVkdVUklS
ZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGhyZWYsIGRvY3VtZW50KCksICZp
ZCk7CiAgICAgU1ZHRWxlbWVudCogc3ZnVGFyZ2V0ID0gaXM8U1ZHRWxlbWVudD4odGFyZ2V0KSA/
IGRvd25jYXN0PFNWR0VsZW1lbnQ+KHRhcmdldCkgOiBudWxscHRyOwogCi0gICAgaWYgKHN2Z1Rh
cmdldCAmJiAhc3ZnVGFyZ2V0LT5pbkRvY3VtZW50KCkpCisgICAgaWYgKHN2Z1RhcmdldCAmJiAh
c3ZnVGFyZ2V0LT5pc0Nvbm5lY3RlZCgpKQogICAgICAgICBzdmdUYXJnZXQgPSBudWxscHRyOwog
CiAgICAgaWYgKHN2Z1RhcmdldCAhPSB0YXJnZXRFbGVtZW50KCkpCkBAIC0yNTUsNyArMjU1LDcg
QEAgdm9pZCBTVkdTTUlMRWxlbWVudDo6cmVzZXQoKQogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBTVkdTTUlMRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIHJv
b3RQYXJlbnQpCiB7CiAgICAgU1ZHRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKHJvb3RQYXJlbnQpOwot
ICAgIGlmICghcm9vdFBhcmVudC5pbkRvY3VtZW50KCkpCisgICAgaWYgKCFyb290UGFyZW50Lmlz
Q29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogCiAgICAgLy8gVmVy
aWZ5IHdlIGFyZSBub3QgaW4gPHVzZT4gaW5zdGFuY2UgdHJlZS4KQEAgLTI5MCw3ICsyOTAsNyBA
QCB2b2lkIFNWR1NNSUxFbGVtZW50OjpmaW5pc2hlZEluc2VydGluZ1N1YnRyZWUoKQogCiB2b2lk
IFNWR1NNSUxFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiByb290UGFyZW50KQog
ewotICAgIGlmIChyb290UGFyZW50LmluRG9jdW1lbnQoKSkgeworICAgIGlmIChyb290UGFyZW50
LmlzQ29ubmVjdGVkKCkpIHsKICAgICAgICAgY2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsKICAg
ICAgICAgZGlzY29ubmVjdENvbmRpdGlvbnMoKTsKICAgICAgICAgc2V0VGFyZ2V0RWxlbWVudChu
dWxscHRyKTsKQEAgLTQ4MSw3ICs0ODEsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbgogICAg
ICAgICAgICAgcGFyc2VCZWdpbk9yRW5kKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
U1ZHTmFtZXM6OmVuZEF0dHIpLCBFbmQpOwogICAgICAgICB9CiAgICAgICAgIHBhcnNlQmVnaW5P
ckVuZCh2YWx1ZS5zdHJpbmcoKSwgQmVnaW4pOwotICAgICAgICBpZiAoaW5Eb2N1bWVudCgpKQor
ICAgICAgICBpZiAoaXNDb25uZWN0ZWQoKSkKICAgICAgICAgICAgIGNvbm5lY3RDb25kaXRpb25z
KCk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjplbmRBdHRyKSB7CiAgICAgICAg
IGlmICghbV9jb25kaXRpb25zLmlzRW1wdHkoKSkgewpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQg
U1ZHU01JTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluCiAgICAgICAgICAgICBwYXJzZUJlZ2luT3JFbmQoYXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6YmVnaW5BdHRyKSwgQmVnaW4pOwogICAg
ICAgICB9CiAgICAgICAgIHBhcnNlQmVnaW5PckVuZCh2YWx1ZS5zdHJpbmcoKSwgRW5kKTsKLSAg
ICAgICAgaWYgKGluRG9jdW1lbnQoKSkKKyAgICAgICAgaWYgKGlzQ29ubmVjdGVkKCkpCiAgICAg
ICAgICAgICBjb25uZWN0Q29uZGl0aW9ucygpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBTVkdO
YW1lczo6b25lbmRBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5lbmRFdmVudEV2ZW50LCBuYW1lLCB2YWx1ZSk7CkBAIC01MjIsNyArNTIyLDcgQEAg
dm9pZCBTVkdTTUlMRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKICAgICBlbHNlIGlmIChhdHRyTmFtZS5tYXRjaGVzKFhMaW5rTmFtZXM6
OmhyZWZBdHRyKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0
aGlzKTsKICAgICAgICAgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKLSAgICB9IGVsc2UgaWYgKGlu
RG9jdW1lbnQoKSkgeworICAgIH0gZWxzZSBpZiAoaXNDb25uZWN0ZWQoKSkgewogICAgICAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmJlZ2luQXR0cikKICAgICAgICAgICAgIGJlZ2luTGlz
dENoYW5nZWQoZWxhcHNlZCgpKTsKICAgICAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmVuZEF0dHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwCmluZGV4IDA5NDljNGQ2
MTk4NzA3NjI1MDA5YTYyZDk0N2M4NGQ2MjhiNDhiMzYuLmQwNGJkNjJjMTQ0M2ExYTg3OTk5Zjk2
YjAwM2MyZjcyYzg4NjMwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5v
ZGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwCkBAIC0x
ODEsNyArMTgxLDcgQEAgc3RhdGljIE5vZGUqIGZpbmRSb290Tm9kZShOb2RlKiBub2RlKQogewog
ICAgIGlmIChpczxBdHRyPigqbm9kZSkpCiAgICAgICAgIG5vZGUgPSBkb3duY2FzdDxBdHRyPigq
bm9kZSkub3duZXJFbGVtZW50KCk7Ci0gICAgaWYgKG5vZGUtPmluRG9jdW1lbnQoKSkKKyAgICBp
ZiAobm9kZS0+aXNDb25uZWN0ZWQoKSkKICAgICAgICAgbm9kZSA9ICZub2RlLT5kb2N1bWVudCgp
OwogICAgIGVsc2UgewogICAgICAgICB3aGlsZSAoTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50
Tm9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IDI5Y2Q1NzMzZTQwZWZiODNkYWI0MWM2ZTRmYjkwNzlh
MDc3ZDlhMGQuLmJjZTBmMGU1ZjhhNWJhNDM3MWVkODUxM2FkYmViMTE4MTg0YjZkODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGli
eG1sMi5jcHAKQEAgLTg1Nyw3ICs4NTcsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjplbmRF
bGVtZW50TnMoKQogCiAgICAgLy8gVGhlIGVsZW1lbnQncyBwYXJlbnQgbWF5IGhhdmUgYWxyZWFk
eSBiZWVuIHJlbW92ZWQgZnJvbSBkb2N1bWVudC4KICAgICAvLyBQYXJzaW5nIGNvbnRpbnVlcyBp
biB0aGlzIGNhc2UsIGJ1dCBzY3JpcHRzIGFyZW4ndCBleGVjdXRlZC4KLSAgICBpZiAoIWVsZW1l
bnQuaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKCFlbGVtZW50LmlzQ29ubmVjdGVkKCkpIHsKICAg
ICAgICAgcG9wQ3VycmVudE5vZGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01Ob2RlLm1tIGIvU291cmNlL1dlYktpdC9tYWMv
RE9NL0RPTU5vZGUubW0KaW5kZXggODcxYzllOTA5NmU3NTAxMDA2YzZiNjM3ZGIyNzc4NDkzMmRl
ZjMxZS4uZWMxMzBmNGY0NjNiZTcyNjJkZTI5Y2JmY2E5NmI0YTgyZDI1OWFlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTU5vZGUubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvRE9NL0RPTU5vZGUubW0KQEAgLTE5OSw3ICsxOTksNyBAQCAtICh2b2lkKXNldFRleHRDb250
ZW50OihOU1N0cmluZyAqKW5ld1RleHRDb250ZW50CiAtIChCT09MKWlzQ29ubmVjdGVkCiB7CiAg
ICAgSlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiB1bndyYXAoKnNlbGYp
LmluRG9jdW1lbnQoKTsKKyAgICByZXR1cm4gdW53cmFwKCpzZWxmKS5pc0Nvbm5lY3RlZCgpOwog
fQogCiAtIChET01FbGVtZW50ICopcGFyZW50RWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KaW5kZXggZDUwMzY3YzU3NDljNjZjMDQ2YWU0OWUzNjMwNWFkMzU3M2IzN2Y3
OS4uNjZjOTQ0YzRmNTdkZGM1ODgyMTIxY2ZjYTkwYjFmNTkyYWYyNGYzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0xNTk0LDkgKzE1OTQsOSBAQCAtICh2b2lkKXNl
bGVjdE5TUmFuZ2U6KE5TUmFuZ2UpcmFuZ2Ugb25FbGVtZW50OihET01FbGVtZW50ICopZWxlbWVu
dAogICAgICAgICByZXR1cm47CiAKICAgICBOb2RlKiBub2RlID0gY29yZShlbGVtZW50KTsKLSAg
ICBpZiAoIW5vZGUtPmluRG9jdW1lbnQoKSkKKyAgICBpZiAoIW5vZGUtPmlzQ29ubmVjdGVkKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2Vs
ZWN0UmFuZ2VPbkVsZW1lbnQocmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCwgKm5vZGUpOwog
fQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>